[프로그래머스] 공원산책 (python 입문)

zae·2023년 4월 10일
2

python

목록 보기
1/3
post-thumbnail

💡 공원산책 info


👀 문제 설명

🌳 주어지는 입력

  • park : map 상태
    시작이동할 수 있는 곳장애물이 있는 곳
    'S''O''X'
  • routes : 이동하는 방향('E', 'W', 'S', 'N'), 칸 개수

🌳 반환값

routes에 해당하는 이동을 모두 하고 난 뒤 최종 위치 [y, x]

🌳 주의사항

  • 이동할 곳에 장애물이 있으면 해당 routes의 명령을 무시해야함.
  • 이동할 곳이 map을 벗어난 범위이면 해당 routes의 명령을 무시해야함.

🔨 해결 방법 (코드)

주석 참고!

def solution(park, routes):
    # 위치 index
    x = 0
    y = 0 
    
    # 시작 위치 찾기
    for i in range(len(park)):
        for j in range(len(park[i])):
            if park[i][j] == 'S':
                x = j
                y = i
                break
    
    # 이동
    for route in routes:
        # 위치 초기화
        xx = x
        yy = y
        # 이동 - 장애물이 있거나 공원을 벗어나면 명령 무시
        for step in range(int(route[2])):
            # 동쪽 : 현재 위치가 map 가장 오른쪽이면 안됨, 이동할 곳이 장애물이면 안됨
            if route[0] == 'E' and xx != len(park[0])-1 and park[yy][xx+1] != 'X':
                xx += 1
                if step == int(route[2])-1:
                    x = xx # step만큼 움직였으면 위치 초기화
            # 서쪽 : 현재 위치가 map 가장 왼쪽이면 안됨, 이동할 곳이 장애물이면 안됨
            elif route[0] == 'W' and xx != 0 and park[yy][xx-1] != 'X':
                xx -= 1
                if step == int(route[2])-1:
                    x = xx
            # 남쪽 : 현재 위치가 map 가장 아래쪽이면 안됨, 이동할 곳이 장애물이면 안됨
            elif route[0] == 'S' and yy != len(park)-1 and park[yy+1][xx] != 'X':
                yy += 1
                if step == int(route[2])-1:
                    y = yy
            # 북쪽 : 현재 위치가 map 가장 위쪽이면 안됨, 이동할 곳이 장애물이면 안됨
            elif route[0] == 'N' and yy != 0 and park[yy-1][xx] != 'X':
                yy -= 1
                if step == int(route[2])-1:
                    y = yy
                    
    return [y, x]

profile
코린이 성장 과정! 깊이 있게 파고들 공부를 탐색하고 있습니다 :)

0개의 댓글