-
BOJ 백준 파이썬 18513 샘터백준 2022. 6. 29. 18:26
일단은 각 샘터의 위치를 큐에 집어 넣는다.
그리고 큐에서 꺼내서 +1,-1로 움직인다.
큐에 집어넣을때마다 갯수는 하나씩 추가하고 결과값도 누적으로 더해간다.
bfs란 말에 맞게 너비우선탐색, 거리가 1,2,3,4 순차적으로 계산해간다.
bfs의 정석 같은 문제라 생각
하지만, 이 문제에서 어려운 점은 메모리 초과
이것은 dict형으로 해결해주면 된다.
dist 배열(내 코드에서는 vist)을 dict로 선언해주고
dist[nx]=dist[x]+1식으로 문제를 해결해가면 된다.
123456789101112131415161718192021222324252627282930313233343536373839404142434445import sysfrom collections import dequefrom itertools import combinationsif __name__=='__main__':# sys.stdin=open("input.txt", "rt")n,home=map(int,input().split()) ##n=샘터의 개수, k=집의 개수start=list(map(int,input().split())) ##샘터 입력 받기max_x=100000000##출발점 큐에 집어넣기res=0cnt=0visit=dict()q=deque()##샘터 배치for x in start:if -max_x<=x<=max_x:visit[x]=0q.append(x)dx=[-1,1]##집 배치cnt=0while q:x=q.popleft()#print(x)for k in range(2):nx=x+dx[k]if nx not in visit:#print(visit)visit[nx]=visit[x]+1q.append((nx))res+=visit[nx]cnt+=1##집을 다 채웠으면 출력if cnt==home:print(res)exit()cs '백준' 카테고리의 다른 글
boj 백준 파이썬 5547 일루미네이션 (0) 2022.06.29 BOJ 백준 파이썬 14940 공주님을 구해라! (0) 2022.06.29 BOJ 백준 파이썬 2668 숫자 고르기 (0) 2022.06.29 BOJ 백준 파이썬 13023 ABCDE (0) 2022.06.29 BOJ 백준 파이썬 2636 치즈 (0) 2022.06.29