티스토리 뷰

📌구현

완전 탐색: 모든 경우의 수를 주저 없이 다 계산하는 해결 방법

시뮬레이션: 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행해야 하는 유형

 

📌문제

예제 4-1 상하좌우

여행가 A는 N x N 크기의 정사각형 공간 위에 서 있다. 이 공간은 1 x 1 크기의 정사각형으로 나누어져 있다. 가장 왼쪽 위의 좌표는 (1, 1)이며, 가장 오른쪽 아래 좌표는 (N, N)에 해당한다. 여행가는 상(U), 하(D), 좌(L), 우(R) 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1, 1)이다. L, R, U, D로 이루어진 문자들이 적혀진 계획서를 보고 여행가 A가 최종적으로 도착할 지점의 좌표를 출력하는 프로그램을 작성하시오.

(단, N x N 크기의 정사각형 공간을 벗어나는 움직임은 무시된다.)

 

📌풀이

연산 횟수는 이동횟수에 비례

따라서 이동 횟수가 N번인 경우 시간 복잡도는 O(N)

 

📌코드

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_types = ["L", "R", "U", "D"]

# 이동 계획을 하나씩 확인
for plan in plans:
    # 이동 후 좌표 구하기
    for i in range(len(move_types)):
        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)

 

주의: 처음엔 단순히 x, y 좌표를 생각하고 L(좌), R(우)로 움직이면 x좌표가 변하고, U(위), D(아래)로 움직이면 y좌표가 변한다고 착각했다. 하지만 이 문제에서는 L(좌), R(우)로 움직이면 y값이 변하고, U(위), D(아래)로 움직이면 x값이 변하는 행과 열의 관계임을 주의해야 한다.

 

📌참고

https://g.co/kgs/eyd5SSd

 

이것이 취업을 위한 코딩 테스트다 with 파이썬

IT 취준생이라면 누구나 입사하고 싶은 카카오・삼성전자・네이버・라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다! IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년

www.google.com

 

'코딩테스트' 카테고리의 다른 글

왕실의 나이트  (4) 2024.10.06
시각  (2) 2024.10.05
숫자 카드 게임, 1이 될 때까지  (4) 2024.10.02
큰 수의 법칙  (3) 2024.10.01
Chapter 3. 그리디 알고리즘, 거스름돈 문제  (6) 2024.09.30
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함