Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Join
- 파이썬
- folium
- BFS
- 멋쟁이사자처럼멋쟁이사자처럼
- 마이온컴퍼니
- 온보딩
- 마이온
- 알고리즘
- GIS
- 멋쟁이사자처럼
- 시각화
- 그리디
- DP
- TiL
- ux·ui디자인
- seaborn
- 인턴10
- 멋재이사자처럼
- Plotly
- Python
- likelion
- parklab
- likelionlikelion
- intern10
- DFS
- pyhton
- 멋사
- 프로젝트
- SQL
Archives
- Today
- Total
지금은마라톤중
[백준]1463번 1로 만들기 본문
해당 문제는 DP 문제 입니다.
접근법
- 작은 문제로 나눴을 때 이번 값을 중복해서 사용할 수 있음
- 메모리제이션 활용
- 이전 dp를 활용하여 값 계산
- 3과 2로 나누어 떨어질 경우 : 최솟값 계산
1) 이전 dp 활용
2) 3과 2로 나누어지는 dp 활용
연산 조건를 한번 더 생각해 볼 필요가 있었습니다.
연산 조건의 우선순위를 다시 생각해봤으면 좀 더 빠른 풀이가 가능했을 것 같습니다.
x = int(input())
dp = [0] * (x+1)
def func_dp(n):
for i in range(2,n+1):
dp[i] = dp[i-1] + 1
if i % 3 ==0:
dp[i] = min(dp[i], dp[i//3]+1)
if i % 2 ==0:
dp[i] = min(dp[i], dp[i//2]+1)
func_dp(x)
print(dp[x])
'STUDY > Python 알고리즘' 카테고리의 다른 글
[백준] 10844번 쉬운 계단 수 (0) | 2024.05.02 |
---|---|
[백준] 2193번 이친수 (0) | 2024.05.01 |
[백준] 2579번 계단오르기 (0) | 2024.04.09 |
[백준] 1010번 다리 놓기 (0) | 2024.04.08 |
[이론] DP(Dynamic Programming, 동적 계획법) (1) | 2024.04.04 |
Comments