코테 오답노트

[프로그래머스] 공원 산책 (파이썬, 예시 테케에 없는 테케도 생각하기)

syveany 2025. 3. 12. 11:14

[문제]

격자판 안에서 장애물을 고려하면서 이동시키는 문제였다.

공원 크기와 시작지점이 각각 다르게 설정되어 있었다.

 

[내 코드]

처음에 공원 크기를 잡아주고 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분만에 발견했다..

 

 

 

[느낀점]

예시 테스트케이스에 없는 부분이 무엇일지 유의하면서 코드를 짜야겠다.

항상 예시에 없는 부분에서 실수가 나온다.

 

스스로 이런저런 예시 대입해보면서 코드가 잘 작동하고 있는지 꼭 확인해보자.

 

내 코드 자체는 마음에 든다!