코딩 테스트/Baekjoon

S3 1463. 1로 만들기

  • -
728x90
반응형

문제 보기 :  1463번: 1로 만들기


문제

  • 정답률 : 33%


작성 코드

from collections import deque

def find1(n):

    visited = [-1]*(n+1)
    visited[n] = 0

    dd = deque([n])
    while dd:
        now = dd.popleft()

        can = []
        if now % 3 ==0:
            can.append(now//3)
        if now%2 == 0:
            can.append(now//2)
        can.append(now-1)

        for value in can:
            if visited[value]== -1:
                visited[value] = visited[now]+1
                dd.append(value)
                if value == 1:
                    return visited[value]

    return visited[1]

n = int(input())
print(find1(n))

풀이

bfs 알고리즘으로 해결했고 visited는 최단경로 문제를 해결할 때 사용하는 [-1]*(n+1)로 두었다. 

그렇게 어려웠던 부분은 없었다!

320x100
728x90

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

G5 7576. 토마토  (0) 2024.10.30
S3 2606. 바이러스  (0) 2024.10.25
S4 9012. 괄호  (0) 2024.10.23
S1 10844. 쉬운 계단 수  (0) 2024.10.23
S1 2156. 포도주 시식  (1) 2024.10.22
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.