PS

백준 12852. 1로 만들기 2

tose33 2022. 6. 24. 14:57

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

 

12852번: 1로 만들기 2

첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 자연수 N이 주어진다.

www.acmicpc.net

 

이 문제는 나눠지는지 확인하고 나눠봐도 되지만 1부터 시작해서 더하거나 2, 3을 곱하면서 계산해도 된다.

 

1 기준 

1+1=2 이므로 d[2] = min(INF, d[1]+1) = 1

1*2=2 이므로 d[2] = min(1, d[1]+1) = 1

1*3=3 이므로 d[3] = min(INF, d[1]+1) = 1

 

2 기준 

2+1=3 이므로 d[3] = min(INF, d[2]+1) = 2

2*2=4 이므로 d[4] = min(INF, d[2]+1) = 2

2*3=6 이므로 d[6] = min(INF, d[2]+1) = 2 

...

 

N을 1로 만드는 방법에 포함되는 수의 출력은, d 배열을 pair로 만들어서 최솟값을 저장할때마다 이전 숫자도 저장해줘서, 거슬러 올라가면서 출력해줬다.