상하좌우

비얌·2022년 2월 17일
0

알고리즘

목록 보기
4/17
post-thumbnail
post-custom-banner

1. 문제

2. 풀이

(1) 내 풀이

내가 아는 x좌표와 y좌표가 아니라서 처음에 헤맸다.

n = int(input())
array = list(input().split())
x, y = 1, 1
for i in range(len(array)):
    if array[i] == 'R' and y < 5:
        y += 1
    if array[i] == 'L' and y > 1:
        y -= 1
    if array[i] == 'U' and x > 1:
        x -= 1
    if array[i] == 'D' and x < 5:
        x += 1
print(x, y)

이렇게 풀어도 답이 나오긴 하는데, 풀이가 훨씬 체계적인 것 같아 풀이를 보고 공부하려고 한다.

(2) 답안

n = int(input())
x, y = 1, 1
plans = input().split() # plans는 리스트이다.

# L, R, U, D에 따른 이동 방향
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
# 1, -1은 한 칸씩 옮기는 것을 의미한다.(방향을 다르게)
move_types = ['L', 'R', 'U', 'D']

# 이동 계획을 하나씩 확인
# 굳이 for plan in len(plan)라고 쓰고 인덱쓰로 접근할 필요가 없었다.
for plan in plans:
    # 이동 후 좌표 구하기
    for i in range(len(move_types)):
    # 이중 for문을 돌면서 어떤 이동 방향을 가졌는지 구한다.
        if plan == move_types[i]:
            nx = x + dx[i]
            ny = y + dy[i]
    # 공간을 벗어나는 경우 무시
    if nx < 1 or ny < 1 or nx > n or ny > n:
        continue
    # 이동 수행
    x, y = nx, ny

print(x, y)
profile
🐹강화하고 싶은 기억을 기록하고 공유하자🐹
post-custom-banner

0개의 댓글