BFS(11)
-
백준 특정 거리의 도시 찾기 코드 및 해설 (파이썬)
https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net 큐를 이용한 BFS 코드를 활용해 풀이했습니다. 처음엔 X에서 각 도시까지의 거리를 충분히 큰 값 INF로 초기화합니다. 여기선 문제에서 주어진 K의 최댓값인 300000보다 1만큼 큰 값을 INF로 설정했습니다. 문제에서 X에서 X까지의 거리는 0이라고 했으므로 X번째 요소는 0으로 값을 변경합니다. 한 번 방문한 곳을 계..
2021.09.07 -
리트코드 Populating Next Right Pointers in Each Node 코드 및 해설 (파이썬)
https://leetcode.com/problems/populating-next-right-pointers-in-each-node/description/ Populating Next Right Pointers in Each Node - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com BFS를 이용해 풀이했습니다. 먼저 root와 root의 depth인 1을 각각 다른 queue에 넣어주고 queue가 빌 때까지 다음을 반복합니다. 각 queue의 맨 첫번째 요소..
2021.06.23 -
DFS, BFS
DFS - 스택 - 재귀함수 이용 # DFS 메서드 정의 def dfs(graph, v, visited): # 현재 노드를 방문 처리 visited[v] = True print(v, end = '') # 현재 노드와 연결된 다른 노드를 재귀적으로 방문 for i in graph[v]: if not visited[i]: dfs(graph, i, visited) BFS - 큐 from collections import deque # BFS 메서드 정의 def bfs(graph, start, visited): queue = deque([start]) # 현재 노드를 방문 처리 visited[start] = True # 큐가 빌 때까지 반복 while queue: # 큐에서 하나의 원소를 뽑아 출력 v = de..
2021.06.22 -
프로그래머스 여행경로 코드 및 해설 (파이썬)
programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 💡 재귀함수를 이용해 풀이했습니다. 재귀함수 __help 내에선 아직 사용하지 않은 티켓들의 리스트를 하나씩 확인하면서, 마지막으로 방문한 공항에서 출발하는 티켓들을 확인합니다. 이에 해당하는 모든 티켓들에 대해 다시 재귀함수를 호출하는데, 이때 tickets에서 현재 티켓은 제외하고, answer에는 현재 티켓의 도착 공항을 추가하여 호출합..
2021.04.29 -
프로그래머스 단어 변환 코드 및 해설 (파이썬)
programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 💡 begin에서 target으로 변환될 수 있는지 확인하는 것이 아니라, 거꾸로 target에서 한 알파벳씩 변환하면서 begin으로 변환될 수 있는지 확인합니다. 먼저 words 안에 target이 없다면 절대 begin이 target으로 변환될 수 없으므로 0을 반환하게 합니다. words안에 target이 있다면, answer..
2021.04.08