출발 노드에서 도착 노드까지 갈 수 있는 모든 경로 print하기
카카오 기출 등산코스 정하기(22 internship) 문제를 풀다가 출발 노드에서 도착 노드까지 갈 수 있는 모든 경로를 출력하는 방법을 알면 풀 수 있을 것이라는 생각이 들어서 알고리즘을 정리해보았습니다. 위와 같은 그래프가 있다고 할 때, 1에서 5까지 가는 경로인 1-2-3-4-5 1-2-4-5 1-2-5 를 모두 구하는 것이 목표입니다. 위의 그래프를 딕셔너리로 나타내면 다음과 같습니다. {1:[2], 2:[1,3,4,5], 3:[2,4], 4:[2,3,5], 5:[2,4]} 각 경로를 path라는 리스트에 저장을 해두고, dfs가 한 번 끝나는 시점마다 pop을 해주는 방식으로 (한 칸 뒤로 물러나서) 해결할 수 있습니다. n, m = map(int, input().split()) graph ..
[알고리즘 팀 스터디] 3주차
알고리즘 팀 스터디 3주차 (22.03.06 - 22.03.12) 범위 1. 프로그래머스 힙 학습 내용 기본적으로 heapq를 사용하면 최소 힙을 만들 수 있고, 최대 힙을 만들기 위해서는 (-value, value) 값에 -를 붙인 것을 첫 번째 원소로 하여 쌍으로 묶어준 후에 힙을 만들면 됩니다. (이 때, 작은 값이 앞으로 오게 되므로 -8, -1, 3이 있다면 -8, -1, 3의 순으로 오게 됩니다.) 힙을 만들어 주면 오름차순으로 정렬되는 것은 아닙니다. 부모가 자식보다 작은 것은 자명하지만, 좌 우 숫자는 정렬되지 않기 때문입니다. 그래서 [1, 2, 4, 7, 3, 9, 5]를 힙으로 만들게 되면 [1, 2, 4, 7, 3, 9, 5]가 됩니다. heapq.heapify(힙으로 만들 리스트)..