유니티 최고

상하좌우 문제 : 수직과 수평방향으로 칸 범위 내 물체를 이동시켜라.

군포망나니 2022. 8. 23. 22:15

#상하좌우 

#문제 : N 을 입력받아 N x N 칸을 생성하고 사용자에게 L R U D 를 자유롭게 입력받은 후 (1,1) 부터 start 로 입력받은 값을 따라 물체를 이동시킵니다. 

# L : 왼쪽으로 이동 L = -1,0
# R : 오른쪽으로 이동 =1, 0  
# U : 위로 이동 = 0, 1 
# D : 아래로 이동 = 0, -1
moves = ['L', 'R', 'U', 'D'] 
#L, R, D, U의 이동범위를 리스트로 x, y 표시 
# 만약에, 리스트 작성하지 않고 +, -를 for문으로 돌린다면? 
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
# 조건 : 칸 범위를 벗어나면 x 

#입력 예시 : 5 RRRUDD 
#출력 예시 : 3 4 -> 최종 도착 칸

#입력받을 N 
N = int(input())
#LRUD 입력받기 
LRUD = input().split() 
#start 
x, y = 1, 1 

#여행계획에 따라 하나씩 위치값을 계산 
for i in LRUD:
  for j in range(len(moves)) : 
    if (i == moves[j]) :
      nx = x + dx[j] 
      ny = y + dy[j] 
      
#공간 밖으로 나가면 무시 

  if nx < 1 or ny < 1 or nx > N or ny > N :
    continue

    #대치 
  x,y = nx, ny

print(x,y)