문제
https://programmers.co.kr/learn/courses/30/lessons/49190?language=python3
코딩테스트 연습 - 방의 개수
[6, 6, 6, 4, 4, 4, 2, 2, 2, 0, 0, 0, 1, 6, 5, 5, 3, 6, 0] 3
programmers.co.kr
코드
from collections import defaultdict
def solution(arrows):
dx=[-1,-1,0,1,1,1,0,-1]
dy=[0,1,1,1,0,-1,-1,-1]
array=defaultdict(list)
answer=0
row,col=0,0
for i in arrows:
for _ in range(2):
nx=row+dx[i]
ny=col+dy[i]
if (nx, ny) in array and (row, col) not in array[(nx, ny)]: # 방문했던 점이지만 경로가 겹치지 않는 경우, 방+1
answer += 1
array[(row, col)].append((nx, ny))
array[(nx, ny)].append((row, col))
elif (nx, ny) not in array: # 방문하지 않았던 경우
array[(row, col)].append((nx, ny)) # 경로가 겹치는 경우는 따로 해줄 필요 없음
array[(nx, ny)].append((row, col))
row=nx
col=ny
return answer
생각 정리
[5, 2, 7, 1, 6, 3]인 경우와 경로가 겹치는 경우를 고려해야 한다.
'문제풀이 > 그래프' 카테고리의 다른 글
[파이썬] [그래프] 백준 1167 트리의 지름 (0) | 2022.04.03 |
---|---|
[파이썬] [그래프] 백준 4195 친구 네트워크 (0) | 2022.03.29 |
[파이썬] [그래프] Pro 순위 (0) | 2022.02.20 |
[파이썬] [그래프] 백준 2252 줄 세우기 (0) | 2022.02.08 |
[파이썬] [그래프] 백준 1922 네트워크 연결 (0) | 2022.02.07 |