[Python]알고리즘/이코테 2021

[구현] 문제1 - 상하좌우

HSY_mumu 2022. 3. 18. 19:07
728x90

상하좌우

1) 문제 해결 아이디어

이동 계획을 리스트로 저장해두고 해당 계획에 따라 범위 내 좌표이면 이동시킨다

 

2) 소스코드

(풀이1) if 문으로 구분

n = int(input())        # n * n 
move = input().split()  # 이동 계획

x, y = 1, 1

# 계획대로 움직이기
for i in range(len(move)):
  if(move[i] == "L" and y > 0):
    y -= 1
  elif(move[i] == "R" and y < n):
    y += 1
  elif(move[i] == "U" and x > 0):
    x -= 1
  elif(move[i] == "D" and x < n):
    x += 1

print(x, y)

(풀이2) 이동 방향, 좌표를 리스트로 구현

n = int(input())        # n * n 
planList = input().split()  # 이동 계획
x, y = 1, 1             # 출발 지점으로 초기화

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

# 계획대로 움직이기
for plan in planList:
  # 계획 찾기
  for i in range(len(move_types)):
    if(move_types[i] == plan):
      # 이동 후 예상 좌표
      nx = x + dx[i]
      ny = y + dy[i]

      # 이동 시 범위 내 좌표이면 이동하기
      if(1 <= nx <= n and 1 <= ny <= n):
        x = nx
        y = ny
        
print(x, y)

 

 

728x90