목록전체 글 (45)
코딩 공부

창고 모양을 그대로 arr라는 이차원 배열에 입력한다. 방문하지 않았던 곳만을 방문하기 위해서 이차원 배열인 visited 배열도 만들어준다. tomato 리스트에 익은 토마토의 좌표(arr의 값이 1인 칸의 좌표)를 넣어주고, not_tomato는 토마토가 원래 들어있지 않은 칸(arr값이 -1인 칸)의 개수이다. bfs 함수 내에서 check를 통해 총 익게 되는 토마토의 개수를 세줄 것이고, date라는 변수를 이용해 토마토가 익는 데 걸린 날짜를 세줄 것이다. q에 tomato 리스트에 있는 토마토들의 좌표를 모두 담아주고, 방문 처리도 해준다. q를 돌면서, 익은 토마토에서 상하좌우로 아직 익지 않은 토마토가 있다면 익혀 나간다. (visited += 1) date변수는 vis..

미로 모양을 그대로 arr라는 이차원 배열에 입력한다. 방문하지 않았던 곳만을 방문하기 위해서 이차원 배열인 visited 배열도 만들어준다. 첫 칸에서 시작해서 마지막 칸으로 이동하는 것이 fix되어 있으니까 bfs함수 내의 q에 처음으로 (0, 0)을 넣어준다. q를 돌리면서 마지막 칸에 도달하게 된다면 return으로 값을 반환하고 도달 전까지는 visited의 값을 1씩 증가해가며 방문 처리를 해준다. from collections import deque def bfs(): q = deque() q.append((0, 0)) visited[0][0] = 1 while q: ci, cj = q.popleft() if (ci, cj) == (N-1, M-1): # 종료조건 : 마지막..

지도 모양을 그대로 arr라는 이차원 배열에 입력한다. 차례로, 방문하지 않았던 곳만을 방문하기 위해서 이차원 배열인 visited 배열도 만들어준다. 각 단지의 집 개수를 모아서 저장하기 위한 size_lst를 list형태로 만들어준다. 이중 for문으로 arr를 탐색하면서 방문한 적이 없으면서 집이 있는 곳(1로 표시된 곳)이 발견되면 bfs를 돌린다. (이때 새로운 단지가 발견되는 것이므로 town에 +1을 해주고, bfs의 결과값으로 집의 개수를 return해 size_lst에 추가해준다. from collections import deque def bfs(si, sj): q = deque() q.append((si, sj)) visited[si][sj] = 1 count = 1..