1463-s3 성공
This commit is contained in:
34
workbook_7319/silver/1463-s3.py
Normal file
34
workbook_7319/silver/1463-s3.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# 1로 만들기
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
input = sys.stdin.readline
|
||||||
|
|
||||||
|
def solution():
|
||||||
|
n = int(input().rstrip())
|
||||||
|
|
||||||
|
dp = [float('inf')] * (n+1)
|
||||||
|
|
||||||
|
dp[n] = 0
|
||||||
|
|
||||||
|
for i in range(n-1, 0, -1):
|
||||||
|
way1 = dp[i*3] if i*3 <= n else float('inf')
|
||||||
|
way2 = dp[i*2] if i*2 <= n else float('inf')
|
||||||
|
way3 = dp[i+1] if i+1 <= n else float('inf')
|
||||||
|
dp[i] = min(way1+1, way2+1, way3+1)
|
||||||
|
|
||||||
|
print(dp[1])
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
solution()
|
||||||
|
|
||||||
|
"""
|
||||||
|
걸린 시간: 8분
|
||||||
|
|
||||||
|
시간 복잡도: n개의 dp 테이블을 채워야하기 때문에 O(n)이다.
|
||||||
|
|
||||||
|
해설: 현재 보는 수까지 오는 방법을 생각해봤을 때 3가지 방법이 있고, 거기서 최소 값에 +1을 한 것이 현재 보는 수까지 온 최단 경로이다.
|
||||||
|
범위 조건만 잘 설정해서 진행하면 끝
|
||||||
|
"""
|
||||||
Reference in New Issue
Block a user