DHistory

[Programmers] Level 1 - 공원 산책 본문

Computer Science/Algorithm

[Programmers] Level 1 - 공원 산책

ddu0422 2023. 6. 12. 14:14

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

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

def solution(park, routes):
    # 초기화
    n, m = len(park), len(park[0])
    x, y = 0, 0
    maps = []

    for i in range(n):
        temp = []
        for j in range(m):
            if park[i][j] == 'S':
                x, y = (i, j)
            temp.append(park[i][j])
        maps.append(temp)

    # 문제풀이
    for data in routes:
        # 명령어
        direction, distance = data.split(" ")

        # 방향 지정
        dx, dy = directions[direction]

        # 한 칸씩 이동
        for i in range(int(distance)):
            nx = x + dx
            ny = y + dy

            # 조건 1: 공원을 벗어나는 경우 명령어 무시
            if not (0 <= nx < n and 0 <= ny < m):
                x -= dx * i
                y -= dy * i
                break
            
            # 조건 2: 장애물인 경우 명령어 무시
            if maps[nx][ny] == 'X':
                x -= dx * i
                y -= dy * i
                break
            
            x, y = nx, ny
          
    return [x, y]

 

채점 결과