[문제]

https://school.programmers.co.kr/learn/courses/30/lessons/172928

 

[풀이]

1. 방향 딕셔너리를 생성해줌

2. 시작 지점 좌표를 구해주고

3. 명령을 하나씩 꺼내서 방향과 거리로 분리하고 탐색하는 과정 반복

4. 탐색할 때 명령을 수행할 수 있는지 여부를 뜻하는 flag 변수 설정

5. 수행할 수 있다면 최종적으로 이동할 위치인 좌표로 수정

def solution(park, routes):
    direction = {'N':(-1, 0), 'E':(0, 1), 'S':(1, 0), 'W':(0, -1)}
    n, m = len(park), len(park[0])
    cx, cy = 0, 0

    for i in range(n):
        for j in range(m):
            if park[i][j] == 'S':
                cx, cy = i, j

    for order in routes:
        key, cnt = order.split()
        dx, dy = direction[key]
        x, y = cx, cy
        flag = True
        
        for _ in range(int(cnt)):
            nx, ny = x + dx, y + dy
            if not (0 <= nx < n and 0 <= ny < m and park[nx][ny] != 'X'):
                flag = False
                break
            x, y = nx, ny
        
        if flag:
            cx, cy = x, y
        
    return [cx, cy]

 

 

'코드카타 > Python' 카테고리의 다른 글

82. 멀리 뛰기  (1) 2025.01.05
신고 결과 받기  (0) 2025.01.02
달리기 경주  (1) 2024.12.30
[PCCP 기출문제] 2번 / 석유 시추  (2) 2024.12.28
개인정보 수집 유효기간  (0) 2024.12.24

+ Recent posts