코딩테스트

[Python] 프로그래머스 / 공원 산책

LOEWEN 2024. 8. 3. 09:27
728x90

문제링크

 

정답 코드

def solution(park, routes):

    n = len(park)
    m = len(park[0])

    d = {'E' : (0, 1),
        'W' : (0, -1),
        'N' : (-1, 0),
        'S' : (1, 0)}

    for i in range(n) :
        for j in range(m) :
            if park[i][j] == 'S' :
                x = i
                y = j
                break

    for route in routes :
        direction, distance = route.split()
        distance = int(distance)

        dir_x, dir_y = d[direction]

        dx = dir_x * distance
        dy = dir_y * distance

        if not (0<=x+dx<n and 0<=y+dy<m) :
            continue

        ignore = False
        if dx != 0 :
            s = min(x, x+dx)
            e = max(x, x+dx)

            for i in range(s, e+1) :               
                if park[i][y] == 'X' :
                    ignore = True
                    break

            if not ignore :
                x = x + dx

        else :
            s = min(y, y+dy)
            e = max(y, y+dy)

            for i in range(s, e+1) :
                if park[x][i] == "X" :
                    ignore = True
                    break

            if not ignore :
                y = y + dy

    return [x, y]