구현 - 예제) 상하좌우

Yona·2021년 9월 13일
0

🌻 algorithm

목록 보기
4/18

이동문제

뭔가 BFS, DFS 도 그렇고
n * m 판에서 움직이는 경우가
코드로 구현했을때 거의 틀이 있는 것 같다.

예시문제 : 상하좌우

입력예시)
5
R R R U D D

출력예시 )
3 4

대충 정리하면
이렇게 움직였을때 바둑판 어디에 위치하는지 출력해야한다.
바둑판 범위를 벗어나서는 안된다

코드

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

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

final_x, final_y = 1, 1

for move in moves :
  # LRUD 중 뭐인지 찾기
  for i in range(4) :
    if move == move_types[i] : #찾으면 그렇게 움직였을때 위치 임시저장 
      tmp_x = final_x + dx[i]
      tmp_y = final_y + dy[i]

  # 임시 저장해둔 위치가 조건(공간을 벗어나는지) 확인하고, 
  # 벗어난 경우에는 그냥 임시 위치로만 남는다
  if tmp_x < 1 or tmp_y < 1 or tmp_x > n or tmp_y > n :
    continue
  
  # 벗어나지 않은 경우는 final 위치로 업데이트 시킨다.
  final_x, final_y = tmp_x, tmp_y

print(final_x, final_y)

거의 이 틀 안에서 움직이니까 걍 외우자(?!)!!

profile
Sometimes you win, sometimes you learn 🏃‍♀️

0개의 댓글