[프로그래머스] [파이썬] 공원 산책

[5일차] [코딩테스트] [연습문제] [LV.1] [시뮬레이션]

🎀 본 게시물은 프로그래머스 연습문제 풀이 게시물입니다. 🎀



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

다른 사람 풀이에 비해 내 풀이가 가장 간단하고 짧은거 같다.
딕셔너리나 어렵게 생각하지 말고 반복문과 조건문만 사용해도 충분할 거라는 생각이 든다.

코드에 주석 설명을 통해 바로 이해하자.

🚀 나의 풀이 ⭕

def solution(park, routes):
    h=len(park)
    w=len(park[0])
    for i,p in enumerate(park):   # 격자판은 무조건 행, 열 완전 탐색을 통해 
        for j,x in enumerate(p):
            if x == 'S':          # 시작점을 찾는다. 
                answer=[i,j]
                break

    for route in routes:          # 로봇 강아지 명령문을 살펴본다.
        a,b = route.split()       # 방향과 거리를 얻는다. 

        if a == 'E':
            if answer[1]+int(b)<w:  # 격자 판을 안넘을 경우만 생각한다. 넘으면 명령을 무시하라고 설명에 써져있다. 
                if 'X' not in park[answer[0]][answer[1]:answer[1]+int(b)+1]:  # 로봇이 갈 거리에 장애물 'X'가 있는지 살펴보고 없으면 명령을 수행한다.
                    answer[1] += int(b)

        elif a == 'W':
            if answer[1]-int(b)>=0:
                if 'X' not in park[answer[0]][answer[1]-int(b):answer[1]+1]:
                    answer[1] -= int(b)

        elif a == 'N':
            if answer[0]-int(b)>=0:
                if 'X' not in [ch[answer[1]] for ch in park[answer[0]-int(b):answer[0]+1]]:
                    answer[0] -= int(b)

        else:   # 남쪽 
            if answer[0]+int(b)<h:
                if 'X' not in [ch[answer[1]] for ch in park[answer[0]:answer[0]+int(b)+1]]:
                    answer[0] += int(b)

    return answer
        


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기


© 2020. All rights reserved.

따라쟁이