hades

[Baekjoon] 1463๋ฒˆ: 1๋กœ ๋งŒ๋“ค๊ธฐ ๋ณธ๋ฌธ

๐Ÿ‘Š PS/Algorithm

[Baekjoon] 1463๋ฒˆ: 1๋กœ ๋งŒ๋“ค๊ธฐ

hades1 2024. 7. 1. 14:32

๐Ÿฅ… ๋ฌธ์ œ

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

 

๐Ÿ” ์„ค๊ณ„

์‹œ๊ฐ„ ์ œํ•œ์ด 0.15์ดˆ์ด๊ณ , N์ด ์ตœ๋Œ€ 1000000์ด๋ฏ€๋กœ, ๋ณดํ†ต 1์ดˆ ๋‹น 1์–ต ๋ฒˆ์˜ ์—ฐ์‚ฐ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, Ω(N^2)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ์‹œ๊ฐ„ ์ œํ•œ์„ ์ดˆ๊ณผํ•œ๋‹ค. N์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ฐ˜๋Œ€๋กœ 1์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ์—ฐ์‚ฐ์„ ๋ฐ˜๋Œ€๋กœ ํ•˜์—ฌ ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ์„ค๊ณ„ํ•œ๋‹ค๋ฉด, O(N)์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ‘Š ํ’€์ด

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n, INF = 1e9+7;
vector<int> dp(1000001, INF);

int main() {
	cin >> n;
	dp[1] = 0;
	for (int i=1; i<n; i++){
		if (i*3 <= 1000000){
			dp[i*3] = min(dp[i*3], dp[i]+1);
		}
		if (i*2 <= 1000000){
			dp[i*2] = min(dp[i*2], dp[i]+1);
		}
		if (i+1 <= 1000000){
			dp[i+1] = min(dp[i+1], dp[i]+1);
		}
	}
	cout << dp[n] << "\n";
	return 0;
}

dp[i]๋Š” i๋กœ๋ถ€ํ„ฐ 1์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์—ฐ์‚ฐ์˜ ์ตœ์†Œ ํšŸ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค. ์—ฐ์‚ฐ์˜ ์ตœ์†Œ ํšŸ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•  ๋•Œ, ์ธ๋ฑ์Šค๊ฐ€ ๋ฐฐ์—ด์˜ ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์กฐ๊ฑด์„ ๋‹ฌ์•„์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

๐Ÿ“ ๋ฉ”๋ชจ

๋ฐ˜๋Œ€๋กœ๋„ ์ƒ๊ฐํ•ด๋ณด๋Š” ์Šต๊ด€ ๊ธฐ๋ฅด๊ธฐ