728x90
# 한칸씩 탐색하다가 이동가능한 피봇 여부
def solution(park, routes):
answer = []
x, y = 0, 0
# 시작 지점 저장하기
for i in range(len(park)):
for j in range(len(park[i])):
if park[i][j] == 'S':
x, y = i, j
# 이동하기
for route in routes:
# 방향, 이동 횟수
direction, moveNumber = route.split(' ')
moveNumber = int(moveNumber)
dx = x;
dy = y;
canMove = True;
for _ in range(moveNumber):
# 이동가능여부
if direction == 'E':
if dy < len(park[0]) - 1 and park[dx][dy + 1] != 'X':
dy += 1
else :
canMove = False
break
elif direction == 'W':
if dy > 0 and park[dx][dy - 1] != 'X':
dy -= 1
else :
canMove = False
break
elif direction == 'N':
if dx > 0 and park[dx - 1][dy] != 'X':
dx -= 1
else :
canMove = False
break
elif direction == 'S':
if dx < len(park) - 1 and park[dx + 1][dy] != 'X':
dx += 1
else :
canMove = False
break
if canMove :
x = dx;
y = dy;
answer.append(x)
answer.append(y)
return answer
풀이 및 회고
1. 시작지점 좌표 구하기
2. 방향과 이동 횟수를 split() 을 통해 구하기
3. 좌표 밖으로 나가지 않고 장애물에 부딪히지 않으면 값 갱신
3-1 . 위에 조건 중 한개라도 성립하지 않으면 False로 값 변경하여 break
728x90
'프로그래머스' 카테고리의 다른 글
프로그래머스 LV 2 방문길이 (0) | 2024.06.22 |
---|---|
프로그래머스 LV2 더 맵게 (0) | 2024.06.21 |
프로그래머스 LV2 모음사전 (0) | 2024.06.19 |
프로그래머스 LV2 [3차] 압축 (0) | 2024.06.17 |
프로그래머스 LV2 전화번호 목록 (0) | 2024.06.15 |