구현 : 상하좌우

DongJoo Kwak·2022년 4월 21일
0

알고리즘

목록 보기
4/6


시뮬레이션과 완전 탐색을 활용해야하는 구현 문제 !

📈금융 개발 블로그 : https://quantpro.co.kr/

📌 문제 설명

  1. A는 N X N 크기의 정사각형 공간 위에 서있다. 그리고 이 공간은 1 X 1 크기의 정사각형으로 나누어져 있다. 가장 왼쪽 위 좌표는 (1,1), 가장 오른쪽 아래 좌표는 (N,N)이다.

  2. 시작좌표는 항상 (1,1)이며 A는 상,하,좌,우 방향으로 이동할 수 있다.

  3. 이동 계획서에는 L, R, U, D의 문자가 반복적으로 적혀있다.
    L : 왼쪽으로 한 칸 이동
    R : 오른쪽으로 한 칸 이동
    U : 위로 한 칸 이동
    D : 아래로 한 칸 이동

  4. 첫 줄에 N이 입력되고 두 번쨰 줄에는 이동 계획(L,R,U,D)가 입력되며 최종 도착하는 좌표를 출력하여라

🥕입력예시

5
R R R U D D

🥕출력예시

3 4


📌 문제 풀이

  • 좌표이동 문제는 x,y연산을 통해 방향을 이동시키는 리스트를 선언하여 이용해야한다(dx, dy)
  • L, R, U, D를 입력 받았을 때 위의 리스트를 활용하여 x,y값을 연산하여 최종 좌표를 구한다.
n = int(input())

#현재위치
x,y =1,1

#시나리오
plans = input().split()

# L R U D 방향
dx = [0,0,-1, 1]
dy = [-1, 1, 0, 0]
move_types = ['L','R','U','D']

for plan in plans:
  for i in range(len(move_types)):
    if plan == move_types[i]:
      nx = x + dx[i]
      ny = y + dy[i]

# 맵을 벗어날 시 continue
  if nx<1 or ny<1 or nx>n or ny >n:
    continue

  x, y = nx ,ny


print(x,y)```
profile
즐거운 개발 공간

0개의 댓글