알고리즘
-
https://youtu.be/7C9RgOcvkvo?si=HMjH9vrqOZXbSek7 본 내용은 위의 유투브를 참고해서 작성했음을 밝힙니다! 미로 탈출 문제 해결 아이디어 풀이 과정 from collections import deque # N, M을 공백을 기준으로 구분하여 입력 받기 n, m = map(int, input().split()) # 2차원 리스트의 맵 정보 입력 받기 graph = [] for i in range(n): graph.append(list(map(int, input()))) # 이동할 네 가지 방향 정의 (상, 하, 좌, 우) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] # BFS 소스코드 구현 def bfs(x, y): # 큐(Queue) 구현을 위해..
[DFS&BFS] 문제: 미로 탈출https://youtu.be/7C9RgOcvkvo?si=HMjH9vrqOZXbSek7 본 내용은 위의 유투브를 참고해서 작성했음을 밝힙니다! 미로 탈출 문제 해결 아이디어 풀이 과정 from collections import deque # N, M을 공백을 기준으로 구분하여 입력 받기 n, m = map(int, input().split()) # 2차원 리스트의 맵 정보 입력 받기 graph = [] for i in range(n): graph.append(list(map(int, input()))) # 이동할 네 가지 방향 정의 (상, 하, 좌, 우) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] # BFS 소스코드 구현 def bfs(x, y): # 큐(Queue) 구현을 위해..
2024.02.13 -
https://youtu.be/7C9RgOcvkvo?si=HMjH9vrqOZXbSek7 본 내용은 위의 유투브를 참고해서 작성했음을 밝힙니다! 음료수 얼려먹기 문제 해결 아이디어 문제 풀이 # DFS로 특정 노드를 방문하고 연결된 모든 노드들도 방문 def dfs(x, y): # 주어진 범위를 벗어나는 경우에는 즉시 종료 if x = n or y = m: return False # 현재 노드를 아직 방문하지 않았다면 if graph[x][y] == 0: # 해당 노드 방문 처리 graph[x][y] = 1 # 상, 하, 좌, 우의 위치들도 모두 재귀적으로 호출 dfs(x - 1, y) dfs(x, y - 1) dfs(x + 1, y) dfs(x, y + 1) return True return False ..
[DFS & BFS] 문제: 음료수 얼려 먹기https://youtu.be/7C9RgOcvkvo?si=HMjH9vrqOZXbSek7 본 내용은 위의 유투브를 참고해서 작성했음을 밝힙니다! 음료수 얼려먹기 문제 해결 아이디어 문제 풀이 # DFS로 특정 노드를 방문하고 연결된 모든 노드들도 방문 def dfs(x, y): # 주어진 범위를 벗어나는 경우에는 즉시 종료 if x = n or y = m: return False # 현재 노드를 아직 방문하지 않았다면 if graph[x][y] == 0: # 해당 노드 방문 처리 graph[x][y] = 1 # 상, 하, 좌, 우의 위치들도 모두 재귀적으로 호출 dfs(x - 1, y) dfs(x, y - 1) dfs(x + 1, y) dfs(x, y + 1) return True return False ..
2024.02.13 -
https://youtu.be/7C9RgOcvkvo?si=HMjH9vrqOZXbSek7 본 내용은 위 유투브를 참고해서 작성했음을 밝힙니다! BFS (Breadth-First Search) 너비 우선 탐색 그래프에서 가장 가까운 노드부터 우선적으로 탐색하는 알고리즘 큐 자료구조를 이용 탐색 시작 노드를 큐에 삽입하고 방문 처리를 함 큐에서 노드를 꺼낸 뒤에 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문 처리함. 더 이상 2번의 과정을 수행할 수 없을 때까지 반복함. from collections import deque # BFS 메서드 정의 def bfs(graph, start, visited): # 큐(Queue) 구현을 위해 deque 라이브러리 사용 queue = de..
[DFS&BFS] BFS (Breadth-First Search)https://youtu.be/7C9RgOcvkvo?si=HMjH9vrqOZXbSek7 본 내용은 위 유투브를 참고해서 작성했음을 밝힙니다! BFS (Breadth-First Search) 너비 우선 탐색 그래프에서 가장 가까운 노드부터 우선적으로 탐색하는 알고리즘 큐 자료구조를 이용 탐색 시작 노드를 큐에 삽입하고 방문 처리를 함 큐에서 노드를 꺼낸 뒤에 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문 처리함. 더 이상 2번의 과정을 수행할 수 없을 때까지 반복함. from collections import deque # BFS 메서드 정의 def bfs(graph, start, visited): # 큐(Queue) 구현을 위해 deque 라이브러리 사용 queue = de..
2024.02.13 -
https://youtu.be/7C9RgOcvkvo?si=HMjH9vrqOZXbSek7 본 내용은 위 유투브를 참고해서 작성했음을 밝힙니다! DFS (Depth-First Search) DFS는 깊이 우선 탐색이라고도 부르며 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 DFS는 스택 자료구조(혹은 재귀 함수)를 이용하며, 구체적인 동작 과정은 다음과 같음 탐색 시작 노드를 스택에 삽입하고 방문 처리를 함 스택의 최상단 노드에 방문하지 않은 인접한 노드가 하나라도 있으면 그 노드를 스택에 넣고 방문 처리함. 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼냄. 더 이상 2번의 과정을 수행할 수 없을 때까지 반복함. # DFS 메서드 정의 def dfs(graph, v, visited): ..
[DFS&BFS] DFS (Depth-First Search)https://youtu.be/7C9RgOcvkvo?si=HMjH9vrqOZXbSek7 본 내용은 위 유투브를 참고해서 작성했음을 밝힙니다! DFS (Depth-First Search) DFS는 깊이 우선 탐색이라고도 부르며 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘 DFS는 스택 자료구조(혹은 재귀 함수)를 이용하며, 구체적인 동작 과정은 다음과 같음 탐색 시작 노드를 스택에 삽입하고 방문 처리를 함 스택의 최상단 노드에 방문하지 않은 인접한 노드가 하나라도 있으면 그 노드를 스택에 넣고 방문 처리함. 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼냄. 더 이상 2번의 과정을 수행할 수 없을 때까지 반복함. # DFS 메서드 정의 def dfs(graph, v, visited): ..
2024.02.13 -
https://www.youtube.com/watch?v=2zjoKjt97vQ&t=1326s 본 내용은 위의 유투브를 참고했음을 밝힙니다! 왕실의 나이트 풀이 과정 * 음.. LRUD문제랑 관련이 있는 것 같긴 한데.. * 8 * 8 matrix이니까 나올 수 있는 경우의 수가 한정적이긴 한 것 같다. * (1, 1) -> (3, 2), (2, 3) 2개: +2, +1 or +1, +2 * (1, 2) -> (2, 4), (3, 3), (3, 1): 여기서는 +2, -1이 추가 됨 * 그러니까 정리해보면 * (+1, +2), (+2, +1) * (+2, -1), (-1, +2) * (-2, +1), (+1, -2) * (-1, -2), (-2, -1) * 이렇게 8가지가 나올 수 있는데 이게 범위안에 있..
[구현 알고리즘] 문제: 왕실의 나이트https://www.youtube.com/watch?v=2zjoKjt97vQ&t=1326s 본 내용은 위의 유투브를 참고했음을 밝힙니다! 왕실의 나이트 풀이 과정 * 음.. LRUD문제랑 관련이 있는 것 같긴 한데.. * 8 * 8 matrix이니까 나올 수 있는 경우의 수가 한정적이긴 한 것 같다. * (1, 1) -> (3, 2), (2, 3) 2개: +2, +1 or +1, +2 * (1, 2) -> (2, 4), (3, 3), (3, 1): 여기서는 +2, -1이 추가 됨 * 그러니까 정리해보면 * (+1, +2), (+2, +1) * (+2, -1), (-1, +2) * (-2, +1), (+1, -2) * (-1, -2), (-2, -1) * 이렇게 8가지가 나올 수 있는데 이게 범위안에 있..
2024.02.13 -
https://www.youtube.com/watch?v=2zjoKjt97vQ&t=1326s 본 내용은 위의 동영상을 참고해서 작성했습니다~ 문제: 상하좌우 시작 좌표 (1,1) 공간밖은 무시됨. 문제 해결 아이디어 # 행렬 예시 for i in range(5): for j in range(5): print('(', i, ',', j, ')') print() #%% #동, 북, 서, 남 dx = [0, -1, 0, 1] dy = [1, 0, -1, 0] # 현재 위치 x, y = 1, 1 for i in range(4): # 다음 위치 nx = x + dx[i] ny = y + dy[i] print(nx, ny) #%% md * 문제를 풀기전에 구현에 대해서 배울 때 사용했던 짧은 코드를 가져왔다. * ..
[구현 알고리즘] 문제: 상하좌우https://www.youtube.com/watch?v=2zjoKjt97vQ&t=1326s 본 내용은 위의 동영상을 참고해서 작성했습니다~ 문제: 상하좌우 시작 좌표 (1,1) 공간밖은 무시됨. 문제 해결 아이디어 # 행렬 예시 for i in range(5): for j in range(5): print('(', i, ',', j, ')') print() #%% #동, 북, 서, 남 dx = [0, -1, 0, 1] dy = [1, 0, -1, 0] # 현재 위치 x, y = 1, 1 for i in range(4): # 다음 위치 nx = x + dx[i] ny = y + dy[i] print(nx, ny) #%% md * 문제를 풀기전에 구현에 대해서 배울 때 사용했던 짧은 코드를 가져왔다. * ..
2024.02.12