✏️ 문제
문제 파악
원래 좌표 이동과 좀 다르게 아래로 갈수록 +1 되는 형식인데... 이런 형식만 나오면 왜이렇게 헷갈리는 지..
그래서 방향을 처리하는 게 매우매우 중요하다. 그리고 원래 좌표 이동과 별개로 생각하고 계산하는 게 편하다..!
중요한 건 routes 중 하나를 처리하는 중에 공원을 벗어나거나 장애물을 만나면 무조건 해당 명령을 받아들이기 전 위치에서 다음 명령을 수행해야한다!
처음에 난 continue를 사용했는데 결과를 보니 예시 3번과 같은 경우 E 2를 처리할 때 장애물을 벗어나므로 E 2라는 명령을 처리하기 전 위치로 가야하는데 E 1까지는 장애물을 벗어나지 않으니까 E 1까지 처리한 후에 다음 명령을 수행해서 계속 틀렸었따 ㅠ
이럴 땐 continue가 아닌 break를 사용해야 했었음 ......
코드
def solution(park, routes):
h, w = len(park), len(park[0])
dn = ['N', 'S', 'W', 'E']
d = [(-1, 0), (1, 0), (0, -1), (0, 1)]
graph = [[0] * w for _ in range(h)]
cur_x, cur_y = 0, 0
for i, par in enumerate(park):
for j, p in enumerate(par):
if p == 'X':
graph[i][j] = 1
if p == 'S':
cur_x, cur_y = i, j
for r in routes:
t_x, t_y = cur_x, cur_y
for _ in range(int(r[2])):
dx, dy = cur_x + d[dn.index(r[0])][0], cur_y + d[dn.index(r[0])][1]
if 0 <= dx < h and 0 <= dy < w and graph[dx][dy] != 1:
cur_x, cur_y = dx, dy
else:
cur_x, cur_y = t_x, t_y
break
return [cur_x, cur_y]
'PS > 프로그래머스' 카테고리의 다른 글
[Python] 개인정보 수집 유효기간 (1) | 2024.11.02 |
---|---|
[Python] 10번 / 공원 (0) | 2024.11.02 |
[Python] 10번 / 데이터 분석 (0) | 2024.11.01 |
[Python] 1번 / 붕대 감기 (0) | 2024.11.01 |
[Python] 햄버거 만들기 (0) | 2024.10.31 |