본문 바로가기

분류 전체보기

(282)
2468 안전 영역 / DFS, BFS 정답그래프 깊은 복사g = [row[:] for row in graph] 아무런 땅이 물에 젖지 않는 경우도 포함해야 하기 때문에 비가 오는 경우를 0부터 넣어서 체크해야 함 (1부터 시작하면 1이하의 땅은 젖기 때문에)from collections import dequen = int(input()) # n * n 지도# 지도 세팅graph = []for _ in range(n): row = input() row_list = list(map(int, row.split())) graph.append(row_list)# 상하좌우 세팅dx = [-1, 1, 0, 0]dy = [0, 0, -1, 1]def BFS(x, y, g): queue = deque() queue.append((..
JPA 복기하기 1 : 다대일 관계와 N+1 문제해결 및 페이징 새로운 사이드 프로젝트를 시작하면서 엔티티부터 처음부터 만들기 시작했다!!그런데,,,!! 만들면서 다대일 관계나 엔티티에 붙이는 어노테이션, N+1 문제 같은 것들이 기억이 흐릿흐릿 해진 것이다 😳엔티티를 구성하면서 기억이 가물가물했던 부분들을 다시 정리해보고자 한다엔티티 만들기애매모호 개념 1 : @NoArgsConstructor(access = AccessLevel.PROTECTED)를 왜 쓰는걸까?protected 접근 범위같은 패키지 내의 클래스다른 패키지라도 상속한 자식 클래스엔티티의 생성자를 protected로 제한을 걸었을 때 이점JAP는 리플랙션을 사용해서 엔티티객체를 만들기 때문에 기본 생성자가 필요함저렇게 기본 생성자를 생성할 수 있는 범위를 정해주면 외부에서 실수로 new Enti..
2583 영역 구하기 / DFS, BFS 정답정사각형 범위의 좌표들은 모두 1로 마킹하고 해당 그래프에서 1이 아닌 부분만 탐색하면 됨셀의 경계 좌표이기 때문에 실제로 색칠되는 칸은 이차원배열에서 돌아가는 것처럼 생각하면 됨# 입력받은 정사각형 좌표들을 1로 마킹for _ in range(k): x1, y1, x2, y2 = map(int, input().split()) for y in range(y1, y2): for x in range(x1, x2): graph[y][x] = 12차원 배열을 돌릴 때는 y값과 x값을 잘 생각하며 돌려야 함from collections import dequem, n, k = map(int, input().split()) # m = 높이, n = 가로 길이# 그래프 세..
2667 단지번호붙이기 / DFS, BFS 정답방문한 지점은 다시 방문할 수 없도록 해당 좌표의 값을 1로 변경해야 함큐에서 해당 노드를 뺄 때는 while문 아래에서 빼야 함from collections import dequen = int(input()) # n * n 형태의 지도의 크기# 지도 세팅maze = []for _ in range(n): row = input() char_row = list(row) int_row = list(map(int, char_row)) maze.append(int_row)# 상하좌우 좌표 세팅dx = [-1, 1, 0, 0]dy = [0, 0, -1, 1]def BFS(x, y): queue = deque() queue.append((x, y)) maze[x][y] = 0..
2178 미로 탐색 / DFS, BFS BFS로 풀기해당 도착지로 가기 위해 지나야하는 최소의 칸 수를 구해야하므로 DFS, BFS 중에서 BFS로 풀어야겠다는 생각을 가져야 함2차원 미로 배열 만들기어떤 문자열에 list() 함수를 사용하면 해당 문자열은 리스트로 변환됨변환된 리스트는 문자열이기 때문에 숫자로 변경해줘야 함N × M 크기의 배열로 표현되는 미로이므로 for문의 range는 nn, m = map(int, input().split()) # N × M 크기의 배열로 표현되는 미로, N개의 줄에 M개의 정수로 미로가 주어짐maze = []# 2차원 배열 만들기for _ in range(n): row = input() row_list = list(row) # ['1', '0', '1', '0' ...] int_list..
2644 촌수계산 / DFS, BFS 정답어제 풀었던 케빈 베이컨의 법칙과 동일시작 노드로부터 도착노드까지의 거리를 구해서 반환하면 됨from collections import dequedef BFS (graph, start, n, goal): queue = deque() queue.append(start) visited = [False] * (n + 1) visited[start] = True distance = [0] * (n + 1) while queue: current = queue.popleft() for neighbor in graph[current]: if visited[neighbor] is False: distance[ne..
인덱스와 B-Tree 인덱스란?색인 : 쉽게 찾아볼 수 있도록 일정한 순서에 따라 놓은 목록원하는 값을 빠르게 찾을 수 있음where 절을 통해서 검색할 수 있어야 인덱스가 사용됨데이터베이스 테이블에 대한 검색 성능을 향상시키는 자료 구조이며, where 절 등을 통해서 활용됨 인덱스를 적용하지 않는다면?100만건 이상의 데이터에서 이메일이 yn324@naver.com인 회원을 조회할 때 느리다전체 데이터에서 순차적으로 확인하기 때문에!데이터가 기준없이 저장된 상태이기 때문에 데이터가 특정 기준으로 정렬되어 있다면 검색을 빠르게 할 수 있음 인덱스 특징인덱스는 항상 최신의 정렬상태를 유지함인덱스도 하나의 데이터베이스 객체데이터베이스 크기의 약 10% 정도의 저장공간 필요 인덱스 알고리즘페이지 : 데이터가 저장되는 단위 (16..
1389 케빈 베이컨의 6단계 법칙 / DFS, BFS 선택해야하는 알고리즘최단거리 = BFSBFS는 가까운 노드부터 탐색하기 때문에 첫 방문 = 최단거리임이 보장됨미로 탈출 (1칸 이동이 비용 1일 때)각 노드까지 몇 단계만에 갈 수 있는지최단 이동 횟수, 최단 거리 찾기모든 경로를 다 탐색하고 싶을 때 = DFS모든 경로를 다 탐색하고 싶을 때모든 경우의 수를 보고 싶을 때 (조합, 순열, 경로)백트래킹 (N-Queen, 스도쿠, 조합 등)사이클 찾기=> 그러므로 해당 문제에서는 반드시 BFS를 사용해야 함 기준 노드에서부터 다른 노드까지의 거리1. distance = [0] * (n + 1) 의미모든 거리를 처음엔 0으로 초기화 n = 5distance = [0] * (n + 1)print(distance)# 출력: [0, 0, 0, 0, 0, 0]#..