We-Co

[We-Co] 구현 - 상하좌우 이동 알고리즘, 좌표이동 본문

Python/Algorithm

[We-Co] 구현 - 상하좌우 이동 알고리즘, 좌표이동

위기의코딩맨 2022. 2. 21. 17:00
반응형

안녕하세요. 위기의 코딩맨입니다.

오늘은 리스트 상하좌우 이동하는 알고리즘에 대해 알아보도록 하겠습니다.

가끔 코딩 테스트를 진행할 때, 많이 사용되는 알고리즘이므로 알아두시면 좋습니다.

[ Code ]

input_num_ = 5
input_List = ["R","R","R","U","D","D"]

xd = [0,0,-1,1]
yd = [1,-1,0,0]
x,y = 1, 1

list_ = ["R", "L", "U", "D"] 

  


for input_ in input_List:
  for i in range(len(list_)):
    if input_ == list_[i]:
      nx = x + xd[i]
      ny = y + yd[i]
  if nx < 1 or ny < 1 or nx > input_num_ or ny > input_num_:
    continue
  x, y = nx, ny 

 

문제를 보시면 

input_num_은 리스트 5*5를 생각하시면 됩니다.

input_List는 이동하는 방향을 담고 있는 리스트라고 생각하시면 됩니다.

 

xd = [0, 0, -1, 1]

yd = [1, -1, 0, 0]

해당 값들은  list_의 "R", "L", "U", "D"에 이동할 때 이동되는 거리를 나타내는 리스트 입니다.

 

1,1에서 R(오른쪽)으로 이동한다고 하면 1,2 좌표로 변경되는 과정에서

x[0], y[0]의 값을 가져와서 x,y 좌표에 적용해 주는 알고리즘 입니다.

 

1,1로 시작해서 R,R,R 3번 이동하여 4로 변경되고, "U"는 범위에 벗어나 무시되고, 

"D", "D"의 이벤트를 통해 3으로 변경됩니다.

 

결과는

결과

 

만약 이동거리를 벗어나면 continue를 해주어 넘어가는 작업을 해주었습니다.

해당 알고리즘을 응용하여 코딩 테스트 문제들에 많이 적용되는 경우가 있으니

알아두는 것이 좋습니다.

반응형