[BOJ] 12852번 : 1로 만들기 2

2024. 8. 31. 17:55Algorithm

1. problem : 

https://www.acmicpc.net/problem/12852

 

2. solution 1 :

#include <bits/stdc++.h>
using namespace std;
int n;
int d[1000005]; 
int pre[1000005]; 
int main(void) {
	ios::sync_with_stdio(0);
	cin.tie(0); 
	cin >> n;
	d[1] = 0; 

	for (int i = 2; i <= n; i++) {
		d[i] = d[i - 1] + 1;
		pre[i] = i - 1;
		if (i % 2 == 0 && d[i] > d[i/2] + 1) {
			d[i] = min(d[i], d[i / 2] + 1);
			pre[i] = i / 2;
		}
		if (i % 3 == 0 && d[i] > d[i/3] + 1) {
			d[i] = min(d[i], d[i / 3] + 1);
			pre[i] = i / 3;
		}
	}
	cout << d[n] << '\n';
	int cur = n; 
	while (true) {
		cout << cur << ' '; 
		if (cur == 1) break; 
		cur = pre[cur];
	}
}

source code 출처 : https://github.com/encrypted-def/basic-algo-lecture/blob/master/0x10/solutions/12852.cpp

 

basic-algo-lecture/0x10/solutions/12852.cpp at master · encrypted-def/basic-algo-lecture

바킹독의 실전 알고리즘 강의 자료. Contribute to encrypted-def/basic-algo-lecture development by creating an account on GitHub.

github.com

 

'Algorithm' 카테고리의 다른 글

[BOJ] 1932번 : 정수 삼각형  (0) 2024.09.01
[BOJ] 1003번 : 피보나치 함수  (2) 2024.09.01
[BOJ] 11659번 : 구간 합 구하기 4  (0) 2024.08.31
[BOJ] 11726번 : 2 x n 타일링  (0) 2024.08.31
[BOJ] 1149번 : RGB거리  (0) 2024.08.31