주니어로서의 백 걸음, 개발자로서의 한 걸음

구현 - 상하좌우 본문

Python/개념 및 정리

구현 - 상하좌우

코딩하는 친구 2023. 7. 26. 18:45

문제 해설: 이 문제의 연산 횟수는 이동 횟수에 비례하게 된다. 예를 들어 이동 횟수가 N번인 경우 시간 복잡도는 O(N)이다. 따라서 이 문제의 시간 복잡도는 매우 넉넉한 편이다.

해당 문제는 이동 방향에 따라서 dx, dy의 값을 올바르게 매치시켜야 한다.

예를 들어 이동 방향이 R이라면 dx값은 그대로이고 dy값은 1이 더해진다. 따라서 이동 방향에 맞춰서 dx, dy의 배열을 정렬해 준다.

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

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

x, y = 1, 1
for plan in plans:
    for i in range(len(move)):
        if plan == move[i]:
            nx = x + dx[i]
            ny = y + dy[i]
    if nx < 1 or ny < 1 or nx > n or ny > n:
            continue
    x = nx
    y = ny
print(x, y)

출처: 나동빈, 『이것이 취업을 위한 코딩 테스트다 with 파이썬』(한빛미디어), 110-112p

'Python > 개념 및 정리' 카테고리의 다른 글

구현 - 왕실의 나이트  (0) 2023.07.27
구현 - 시각  (0) 2023.07.27
1이 될 때까지  (0) 2023.06.27
숫자 카드 게임  (0) 2023.06.27
큰 수의 법칙  (0) 2023.06.27