[문제]
격자판 안에서 장애물을 고려하면서 이동시키는 문제였다.
공원 크기와 시작지점이 각각 다르게 설정되어 있었다.
[내 코드]
처음에 공원 크기를 잡아주고 S 위치를 파악한 다음 이동을 시켜줬다.
조건이 모두 만족해야 이동하는 방법으로 코드를 구성했다.
def solution(park, routes):
answer = []
# 공원 크기
H = len(park)-1
W = len(park[0])-1
# 시작점 설정
i = 0
while park: # for문 써도 되었을 듯
if 'S' in park[i]:
a = i
b = park[i].index('S')
break
i += 1
# 이동
for i in routes:
d, mv = i[0], int(i[2]) # split 써도 되었을 듯
if d == 'N' and a-mv >= 0:
rt = ''
for j in park[a-mv:a]:
rt += j[b]
if 'X' not in rt:
a -= mv
elif d == 'S' and a+mv <= H:
rt = ''
for j in park[a+1:a+mv+1]:
rt += j[b]
if 'X' not in rt:
a += mv
elif d == 'W' and b-mv >= 0 and 'X' not in park[a][b-mv:b]:
b -= mv
elif d == 'E' and b+mv <= W and 'X' not in park[a][b+1:b+mv+1]:
b += mv
return [a,b]
[틀린 이유]
방향이 'N'과 'W' 일 때 park 범위를 잘못 설정했었다!!!
(방향이 'N'일 때 park범위를 [a-mv+1:a+1]로, 방향이 'W'일 때 park 범위를 [a][b-mv+1:b+1]로 설정했었다..)
도대체 뭐가 틀렸는지 모르겠어서 유심히 보다가 30분만에 발견했다..
[느낀점]
예시 테스트케이스에 없는 부분이 무엇일지 유의하면서 코드를 짜야겠다.
항상 예시에 없는 부분에서 실수가 나온다.
스스로 이런저런 예시 대입해보면서 코드가 잘 작동하고 있는지 꼭 확인해보자.
내 코드 자체는 마음에 든다!
'코테 오답노트' 카테고리의 다른 글
[프로그래머스] 지폐 접기 (파이썬, 예시 테게에 없는 테케도 생각하기) (0) | 2025.03.18 |
---|---|
[프로그래머스] 소수 만들기 (파이썬, 최적화) (0) | 2025.03.14 |
[프로그래머스] 달리기 경주 (파이썬, 시간복잡도 개선) (0) | 2025.03.06 |
[프로그래머스] 옹알이(2) (파이썬, startswith 함수) (0) | 2025.03.04 |
[프로그래머스] 햄버거 만들기 (파이썬, 시간초과) (0) | 2025.03.03 |