티스토리 뷰
반응형
백준 1463 1로 만들기
해설
Queue
를 이용하여, 임의의 n 에서 1 까지의 이동하는 것을 구현하여서 최단경로 길이를 구할 수 있다. (BFS)
하지만 문제를 뒤집어서 생각해보면, n에서 1까지의 최단경로 길이는 다음 세개 중 하나이다.
- n/2 에서 1까지 가는 최단경로 길이 + 1
- n/3 에서 1까지 가는 최단경로 길이 +1
- n-1 에서 1까지 가는 최단경로 길이 + 1
아래는 memoization
을 이용하여 문제를 해결한 소스코드이다.
````C++
#include
#include
#include
using namespace std;
int d[(int)1e6+1];
int go(int cur)
{
if ( cur <= 1 ) return 0;
if ( d[cur] >= 0) return d[cur];
d[cur] = 1e9;
if ( cur%2 == 0 ) d[cur] = go(cur/2)+1;
if ( cur%3 == 0 ) d[cur] = min( go(cur/3) +1, d[cur] );
d[cur] = min(go(cur-1)+1, d[cur]);
return d[cur];
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
memset(d, -1, sizeof(d));
int n;
cin >> n;
cout << go(n) << "\n";
} `
반응형
'알고리즘 문제 > DP' 카테고리의 다른 글
백준 2133 타일채우기 (0) | 2019.09.18 |
---|---|
백준 14494 다이나믹이 뭐에요? (0) | 2019.09.17 |
백준 15483 최소편집 (0) | 2018.12.30 |
백준 15991 1, 2, 3 더하기 - 6 (0) | 2018.10.23 |
백준1126 같은탑 (0) | 2017.12.05 |
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Arena
- 대규모 시스템 설계 기초
- javascript
- 엄청난 인내심과 시뮬레이션을 위한 아레나 툴
- 로젠
- paul wilton
- 시뮬레이션
- 자바스크립트
- flutter
- 아레나시뮬레이션
- 항해99
- arena simulation
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 이산 수학
- grafana cloud
- Simulation
- 아레나
- 자바스크립트 예제
- 이산수학
- 데이터 중심 애플리케이션 설계
- rosen
- 명제논리
- 아레나 시뮬레이션
- beginning javascript
- Propositional and Predicate Logic
- 그라파나
- Discrete Mathematics
- Grafana
- 최단경로 알고리즘
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함