구현 - 상하좌우

SummerToday·2025년 1월 5일
0
post-thumbnail

문제 설명

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

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

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

이때, 여행자가 (N \times N) 크기의 정사각형 공간을 벗어나는 움직임은 무시된다.
예를 들어, ((1, 1))의 위치에서 L 혹은 U를 만나면 무시된다.

계획서 예시

R R R U D D

입력 조건

  1. 첫째 줄에 공간의 크기를 나타내는 N이 주어진다.
  2. 둘째 줄에 여행자 A가 이동할 계획서 내용이 주어진다.

출력 조건

  • 첫째 줄에 여행자 A가 최종적으로 도착할 지점의 좌표 (X, Y)를 공백으로 구분하여 출력한다.

입력 예시

5
R R R U D D

출력 예시

3 4

해답 코드 · 주요 로직 설명

a =  int(input())

x, y = 1, 1

moving = list(map(str, input().split()))

for i in range(len(moving)):
    if moving[i] == 'L':
        if x != 1:
            x -= 1
    if moving[i] == 'R':
        if x != a:
            x += 1
    if moving[i] == 'U':
        if y != 1:
            y -= 1
    if moving[i] == 'D':
        if y != a:
            y += 1        

print(x, y)            
  • cf. map 객체는 인덱싱(예: moving[i])을 지원하지 않는다. map은 이터레이터이기 때문에 반복문으로 순회할 수는 있지만, 인덱스를 사용하려면 리스트로 변환해야 한다.



해당 글은 다음 도서의 내용을 정리하고 참고한 글임을 밝힙니다. 보다 자세한 내용은 아래 책에서 확인할 수 있습니다. 나동빈, ⌜이것이 취업을 위한 코딩 테스트다 with 파이썬⌟, 한빛미디어, 2020, 604쪽
profile
IT, 개발 관련 정보들을 기록하는 장소입니다.

0개의 댓글