데이터 꿈나무

[Alforithm] 이코테_상하좌우 문제 (110p) 본문

Activity/Algorithm

[Alforithm] 이코테_상하좌우 문제 (110p)

ye_ju 2024. 5. 22. 15:51

 

  • 입력 조건

- 첫째 줄에 공간의 크기를 나타내는 n이 주어진다.  (1 <= n <=  100)

- 둘째 줄에 여행가 A가 이동할 계획서 내용이 주어진다. (1 <= 이동 횟수 <= 100)

 

  • 출력 조건

첫째 줄에 여행가 A가 최종적으로 도착할 지점의 좌표 (X, Y)를 공백으로 구분하여 출력한다. 

 

  • 입력 예시 

5

R R R U D D

  • 출력 예시

3 4

 

L: 왼쪽으로 한 칸 이동
R: 오른쪽으로 한 칸 이동
U: 위로 한 칸 이동
D: 아래로 한 칸 이동

 

 

 

  • 작성한 코드
n = int(input())
plans = input().split()

x, y = 1,1

# 'L','R','U','D'에 따른 이동 방향
dx = [0,0,-1,1]
dy = [-1,1,0,0]

move_type = ['L','R','U','D']

for plan in plans:  # plan 하나당, 
    for i in range(len(move_type)):  # move_type 하나씩 탐색.
        if plan == move_type[i]:     # plan과 move_type을 하나씩 탐색하면서 같은 것이 나온 경우에 이후 코드 진행
            nx = x + dx[i]
            ny = y + dy[i]
    
    # 공간을 벗어나는 경우 무시
    if nx < 1 or ny < 1 or nx > n or ny > n:
        continue

    # 이동 수행(x,y 업데이트)
    x, y = nx, ny

print(x, y)

Comments