너비 우선 탐색(2)
-
[백준] 2251 물통 (골드 5)
물통의 상태를 매번 큐에 넣어주면서 이전에 도달하지 못했던 상태면 큐에 삽입해주고 방문처리를 하는 방식으로 진행했다. 미로찾기와 같은 형태의 상황만 bfs를 사용하는 것이 아니라, 현재의 상태에서 다음 상태로 연결되는 상황이기만 한다면 bfs를 떠올려보아야 한다. visited 는 (A, B, C)에 들어있는 물의 양의 튜플이 들어가는 set으로 정의했는데, 문제를 다 풀고 생각해보니, 물의 총량은 일정하기 때문에 3개의 물통 중 2개의 물통에 들어있는 양만 저장하면 된다. 즉, visited를 200*200의 2차원 배열로 만들었어도 충분히 가능했다는 말이다. 시간복잡도 측면에서 약간 이득이 될 것 같다. from collections import deque import sys input = sys.s..
2023.03.22 -
[백준] 6593 상범 빌딩 (골드 5)
bfs를 활용하여 두 지점이 연결되어 있는 지 여부를 판단하는 전형적인 문제이다. 삼차원 배열을 받아오는 과정에서 어색한 느낌이 있었다. 그리고 다음 위치를 판단하는 과정에서 갈 수 있는 곳을 기준으로 체크하다보니 'E' 지점을 포함시키지 못해서 에러가 계속 났다. 갈 수 없는 곳을 기준으로 체크해서 해결할 수 있었다. 이동거리를 방문처리배열의 값으로 지정해주는 방식으로 큐에 넣는 원소의 개수를 최소화했다. (큐에 넣는 것도 가능하다.) from collections import deque import sys input = sys.stdin.readline ## L : 층 ## R : 행 ## C : 열 while True: L, R, C = map(int, input().rstrip().split())..
2023.03.21