def solution(park, routes):
    answer = []
    park_list = [list(park[i]) for i in range(len(park))]
    dirc_dict = dict([['N', 0], ['S', 1], ['W', 2], ['E', 3]])
    dx = [0, 0, -1, 1]
    dy = [-1, 1, 0, 0]
    W = len(park_list[0])
    H = len(park_list)
    X = 0
    Y = 0
    for i in range (H):
        for j in range (W):
            if park_list[i][j] == "S":
                Y = i
                X = j

    for r in routes:
        dirc, dis = r.strip().split(' ')
        idx = dirc_dict[dirc]
        newX = X + dx[idx] * int(dis)
        newY = Y + dy[idx] * int(dis)
        if newX >= 0 and newX < W and newY >= 0 and newY < H:
            tf = 0
            stepx = 1 
            if X > newX:
                stepx = -1
            for i in range (X, newX+stepx, stepx):
                if (park_list[newY][i] == "X"):
                    tf = 1
                    break
            stepy = 1 
            if Y > newY:
                stepy = -1
            for j in range(Y, newY+stepy, stepy):
                if (park_list[j][newX] == "X"):
                    tf = 1
                    break
            if tf == 0:
                X = newX
                Y = newY
    return Y, X

 

유형 : 구현

오우. 어렵다. 

 

일단 구현 자체는 복잡하지 않은데 index가 헷갈리는 게 많았다. 

X, Y축이 뒤죽박죽 되었는데, 처음부터 두 개를 바꾸고 풀었어야 더 쉽게 풀렸을 것 같다.

 

그리고 복잡한 게 싫어서 CASE를 전부 나누지 않았는데, 그냥 방향별로 CASE 나눠서 푸는게 더 쉬웠을까 싶다. 

for문에서 양수인 경우만 고려를 하고 음수인 경우를 고려하지 않아서 한참을 헤맸다.

이런 미로 문제에서 방향 경로에 있는 것 전부를 체크해야 하는 경우 꼭 음수를 고려하자. 

 

이 부분이다. 

        if newX >= 0 and newX < W and newY >= 0 and newY < H:
            tf = 0
            stepx = 1 
            if X > newX:
                stepx = -1
            for i in range (X, newX+stepx, stepx):
                if (park_list[newY][i] == "X"):
                    tf = 1
                    break
            stepy = 1 
            if Y > newY:
                stepy = -1
            for j in range(Y, newY+stepy, stepy):
                if (park_list[j][newX] == "X"):
                    tf = 1
                    break
복사했습니다!