구현(1)

Han's·2023년 8월 3일
0
post-thumbnail

접근 방법

  • 보통 구현 유형의 문제는 사소한 입력 조건 등을 문제에서 명시해 주며 문제의 길이가 꽤 긴 편이다.
  • 문제의 길이를 보고 지레 겁먹는데, 고차원적인 사고력을 요구하는 문제는 나오지 않는 편이라 문법에 익숙하다면 오히려 쉽게 풀 수 있다.

문제 (상하좌우)

여행가 A는 N X N 크기의 정사각형 공간 위에 서 있다. 이 공간은 1 x 1 크기의 정사각형으로 나누어져 있다. 가장 왼쪽 위 좌표는 (1.1)이며, 가장 오른쪽 아래 좌표는 (N, N)에 해당한다. 여행가 A는 상, 하. 좌, 우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1,1)이다. 우리 앞에는 여행가 A가 이동할 계획이 적힌 계획서가 놓여 있다.

계획서에는 하나의 줄에 띄어쓰기를 기준으로 하여 L, R, U, D 중 하나의 문자가 반복적으로 적혀있다. 각 문자의 의미는 다음과 같다.

  • L: 왼쪽으로 한 칸 이동
  • R: 오른쪽으로 한 칸 이동
  • U: 위로 한 칸 이동
  • D: 아래로 한 칸 이동

이때 여행가 A가 N X N 크기의 정사각형 공간을 벗어나는 움직임은 무시된다. 예를 들어 (1, 1)의 위치에서 L 혹은 U를 만나면 무시된다. 다음은 N = 5인 지도와 계획서이다.

이 경우 6개의 명령에 따라서 여행가가 움직이게 되는 위치는 순서대로 (1,2), (1,3), (1, 4). (1,4), (2.4), (3, 4)이므로, 최종적으로 여행가 A가 도착하게 되는 곳의 좌표는 (3, 4)이다. 다시 말해 3행 4열의 위치에 해당하므로 (3, 4)라고 적는다. 계획서가 주어졌을 때 여행가 A가 최종적으로 도착할 지점의 좌표를 출력하는 프로그램을 작성하시오.


입력 예시

5
R R R U D D


출력 예시

3 4


풀이

n = int(input())
plans = input().split()

x, y = 1, 1

for direction in plans:
  if direction == "L" and y > 1:
    y -= 1
    continue
  if direction == "R" and y < 5:
    y += 1
    continue
  if direction == "U" and x > 1:
    x -= 1
    continue
  if direction == "D" and x < 5:
    x += 1
    continue

print(x, y)
profile
🍎 iOS Developer

0개의 댓글