[PCCE 기출문제] 5번 / 산책

2024. 9. 5. 18:00PCCE 기출문제

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

 

프로그래머스

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

programmers.co.kr


문제 설명
여름이는 강아지를 산책시키려고 합니다. 여름이는 2차원 좌표평면에서 동/서/남/북 방향으로 1m 단위로 이동하면서 강아지를 산책시킵니다. 산책루트가 담긴 문자열 route가 주어질 때, 도착점의 위치를 return하도록 빈칸을 채워 solution함수를 완성해 주세요.

  • route는 "N", "S", "E", "W"로 이루어져 있습니다.
  • "N"은 북쪽으로 1만큼 움직입니다.
  • "S"는 남쪽으로 1만큼 움직입니다.
    • 북쪽으로 -1만큼 움직인 것과 같습니다.
  • "E"는 동쪽으로 1만큼 움직입니다.
  • "W"는 서쪽으로 1만큼 움직입니다.
    • 동쪽으로 -1만큼 움직인 것과 같습니다.
  • 출발점으로부터 [동쪽으로 떨어진 거리, 북쪽으로 떨어진 거리]형태로 강아지의 최종 위치를 구해서 return해야 합니다.
  • 출발점을 기준으로 서쪽, 남쪽에 있는 경우는 동쪽, 북쪽으로 음수만큼 떨어진 것으로 표현합니다.
    • 출발점으로부터 동쪽으로 2, 북쪽으로 3만큼 떨어졌다면 [2, 3]을 return 합니다.
    • 출발점으로부터 서쪽으로 1, 남쪽으로 4만큼 떨어졌다면 [-1, -4]를 return 합니다.

제한사항

  • 1 ≤ route의 길이 ≤ 20
  • route는 "N", "S", "E", "W"로만 이루어져 있습니다.

입출력 예

route result
"NSSNEWWN" [-1, 1]
"EESEEWNWSNWWNS" [0, 0]

입출력 예 설명
입출력 예 #1

  • "NSSNEWWN" 순서대로 움직이면 서쪽으로 1, 북쪽으로 1만큼 떨어진 곳에 도착하게 되므로 [-1, 1]을 return합니다.

입출력 예 #2

  • "EESEEWNWSNWWNS" 순서대로 움직이면 출발지와 같은 곳으로 돌아오므로 [0, 0]을 return합니다.

빈칸 채우기 문제 안내

  • 빈칸 채우기는 이미 완성된 코드 중 빈칸에 알맞은 코드를 입력하는 문제 타입입니다.
  • 빈칸을 제외한 기본 코드는 수정할 수 없습니다.
  • 빈칸을 채우지 않을 경우, 실행 결과에 에러 메시지가 표시됩니다.

문제 코드

def solution(route):
    east = 0
    north = 0
    for i in route:
        if i == "N":
            north += 1
        elif i == "S" :
            [          ]
        elif i == "E" :
            [          ]
        elif i == [          ]:
            [          ]
    return [east, north]

산책을 마친 강아지가 어느 위치에 도착했는지 구하는 문제입니다.

 

문제에서도 나와있는 것처럼 동쪽 - 서쪽, 북쪽 - 남쪽은 서로 상쇄가 됩니다. 그중 서쪽과 남쪽이 음수 관계로 취급되네요.

머릿속으로 그려보니 좌표계가 생각납니다.

 

문제를 푸는 방법은 간단합니다. 동쪽과 북쪽은 각각 east, north를 증가시키고, 서쪽과 남쪽은 east, north를 감소시킵니다.

조건문에 따라서 증감을 표현해주시면 됩니다.

 

정답 코드를 작성해보겠습니다.

def solution(route):
    east = 0
    north = 0
    for i in route:
        if i == "N":
            north += 1
        elif i == "S" :
            north -= 1
        elif i == "E" :
            east += 1
        elif i == "W" :
            east -= 1
    return [east, north]

 

1. north -= 1
2. east += 1
3. "W"
4. east -= 1