๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/DP

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

by syLim___ 2023. 1. 20.
728x90

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

 

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

์ฒซ์งธ ์ค„์— 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 106๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

 


 

์ •์ˆ˜ N์„ 1๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์€ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€์ด๋‹ค. ํŽธ์˜์ƒ ์—ฐ์‚ฐ A, B, C๋ผ๊ณ  ํ•˜๊ฒ ๋‹ค

 

์—ฐ์‚ฐA N์ด 3์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด, 3์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.
์—ฐ์‚ฐB N์ด 2๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด, 2๋กœ ๋‚˜๋ˆˆ๋‹ค.
์—ฐ์‚ฐC 1์„ ๋บ€๋‹ค.

 

 


 

์ •์ˆ˜ N์ด 2์ธ ๊ฒฝ์šฐ

 ์—ฐ์‚ฐA: ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค

 ์—ฐ์‚ฐB: 2 / 1 = 1์ด๋ฏ€๋กœ 1์ด ๋งŒ๋“ค์–ด์ง„๋‹ค. (์—ฐ์‚ฐํšŸ์ˆ˜:1)

 ์—ฐ์‚ฐC: 2 - 1 = 1์ด๋ฏ€๋กœ 1์ด ๋งŒ๋“ค์–ด์ง„๋‹ค. (์—ฐ์‚ฐํšŸ์ˆ˜:1)

 

 ์ตœ์†Œ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋Š” 1์ด๋‹ค.


์ •์ˆ˜ N์ด 3์ธ ๊ฒฝ์šฐ

 ์—ฐ์‚ฐA: 3 / 1 = 1์ด๋ฏ€๋กœ 1์ด ๋งŒ๋“ค์–ด์ง„๋‹ค. (์—ฐ์‚ฐํšŸ์ˆ˜:1)

 ์—ฐ์‚ฐB: ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค

 ์—ฐ์‚ฐC: 3 - 1 = 2 ์ด๋‹ค. 2๋ฅผ 1๋กœ ๋งŒ๋“œ๋Š” ์ตœ์†Œ์—ฐ์‚ฐ์„ ๋˜๋‹ค์‹œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์œ„์—์„œ ์ด๋ฏธ ํ–ˆ๋‹ค. (์—ฐ์‚ฐํšŸ์ˆ˜:1+1=2)

 

 ์ตœ์†Œ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋Š”  1์ด๋‹ค.


์ •์ˆ˜ N์ด 4์ธ ๊ฒฝ์šฐ

 ์—ฐ์‚ฐA: ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค

 ์—ฐ์‚ฐB: 4 / 2 = 2์ด๋‹ค. 2๋ฅผ 1๋กœ ๋งŒ๋“œ๋Š” ์ตœ์†Œ์—ฐ์‚ฐ์„ ๋˜๋‹ค์‹œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์œ„์—์„œ ์ด๋ฏธ ํ–ˆ๋‹ค. (์—ฐ์‚ฐํšŸ์ˆ˜:1+1=2)

 ์—ฐ์‚ฐC: 4 - 1 = 3์ด๋‹ค. 3์„ 1๋กœ ๋งŒ๋“œ๋Š” ์ตœ์†Œ์—ฐ์‚ฐ์„ ๋˜๋‹ค์‹œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์œ„์—์„œ ์ด๋ฏธ ํ–ˆ๋‹ค. (์—ฐ์‚ฐํšŸ์ˆ˜:1+1=2)

 

 ์ตœ์†Œ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋Š” 2๋‹ค.


์ •์ˆ˜ N์ด 5์ธ ๊ฒฝ์šฐ

 ์—ฐ์‚ฐA: ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค

 ์—ฐ์‚ฐB: ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค

 ์—ฐ์‚ฐC: 5 - 1 = 4์ด๋‹ค. 4๋ฅผ 1๋กœ ๋งŒ๋“œ๋Š” ์ตœ์†Œ์—ฐ์‚ฐ์„ ๋˜๋‹ค์‹œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์œ„์—์„œ ์ด๋ฏธ ํ–ˆ๋‹ค. (์—ฐ์‚ฐํšŸ์ˆ˜:1+2=3)

 

 ์ตœ์†Œ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋Š” 3์ด๋‹ค.


์ •์ˆ˜ N์ด 6์ธ ๊ฒฝ์šฐ

  ์—ฐ์‚ฐA: 6 / 3 = 2์ด๋‹ค. 2๋ฅผ 1๋กœ ๋งŒ๋“œ๋Š” ์ตœ์†Œ์—ฐ์‚ฐ์„ ๋˜๋‹ค์‹œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์œ„์—์„œ ์ด๋ฏธ ํ–ˆ๋‹ค. (์—ฐ์‚ฐํšŸ์ˆ˜:1+1=2)

  ์—ฐ์‚ฐB: 6 / 2 = 3์ด๋‹ค. 3์„ 1๋กœ ๋งŒ๋“œ๋Š” ์ตœ์†Œ์—ฐ์‚ฐ์„ ๋˜๋‹ค์‹œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์œ„์—์„œ ์ด๋ฏธ ํ–ˆ๋‹ค. (์—ฐ์‚ฐํšŸ์ˆ˜:1+1=2)

  ์—ฐ์‚ฐC: 6 - 1 = 5์ด๋‹ค. 5๋ฅผ 1๋กœ ๋งŒ๋“œ๋Š” ์ตœ์†Œ์—ฐ์‚ฐ์„ ๋˜๋‹ค์‹œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์œ„์—์„œ ์ด๋ฏธ ํ–ˆ๋‹ค. (์—ฐ์‚ฐํšŸ์ˆ˜:1+3=4)


์ •๋ฆฌํ•˜๋ฉด,

 ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ,

    ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ’์ด 1์ด๋ผ๋ฉด, ์—ฐ์‚ฐ ํšŸ์ˆ˜ = 1

    ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ’์ด 1์ด ์•„๋‹ˆ๋ผ๋ฉด, ์—ฐ์‚ฐ ํšŸ์ˆ˜ = 1 + ๊ฒฐ๊ณผ๊ฐ’์˜ ์ตœ์†Œ ์—ฐ์‚ฐ ํšŸ์ˆ˜

 

 ์—ฐ์‚ฐ ํšŸ์ˆ˜ ์ค‘ ์ตœ์†Œ๊ฐ’์ด ์ •๋‹ต์ด๋‹ค.

 

 ๋”ฐ๋ผ์„œ 2๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ์ตœ์†Œ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ๋ชจ๋‘ ์ €์žฅํ•ด ๋‘์—ˆ๋‹ค๊ฐ€, ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ทธ ๊ฐ’์„ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ฒ ๋‹ค. 

 

 


 

#include <iostream>
#include <vector>
using namespace std;

int main(){
	
	vector<int> DP={0,0,1,1};
	
	int n; cin >> n;

	for(int i=4;i<n+1;i++) {
		int result = DP[i-1]+1;
		if(i%3==0) result= min(result,DP[i/3]+1);
		if(i%2==0) result = min(result,DP[i/2]+1);
		DP.push_back(result);
		}
		
	cout<<DP[n];
	return 0;
}

 

DP[0], DP[1]์€ ์•ˆ์“ธ๊ฑฐ๋‹ˆ๊นŒ 0์œผ๋กœ ์ดˆ๊ธฐํ™”

DP[2], DP[3]์€ ์–ด์ฐจํ”ผ 1์ธ๊ฑฐ ์•Œ๊ณ ์žˆ์œผ๋‹ˆ 1๋กœ ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๊ณ  ์‹œ์ž‘ํ–ˆ๋‹ค

 

์—ฐ์‚ฐC๋Š” ์ •์ˆ˜ N์˜ ๊ฐ’์— ๊ด€๊ณ„ ์—†์ด ํ•ญ์ƒ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค

๋”ฐ๋ผ์„œ DP[N]์— ์—ฐ์‚ฐC ๊ฒฐ๊ณผ๋ฅผ ์šฐ์„  ์ €์žฅํ•˜๊ณ ,

์—ฐ์‚ฐ A์™€ B๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๊ทธ ๊ฒฐ๊ณผ๊ฐ’์ด DP[N]๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ์—๋งŒ DP[N]์œผ๋กœ ๊ฐฑ์‹ ํ•ด์ฃผ์—ˆ๋‹ค.

 


 

 

 

 

728x90