본문 바로가기
  • 개발 / 공부 / 일상
C++

(C++) [백준] 1로 만들기

by JJeongHyun 2023. 1. 11.
반응형

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

 

1463번: 1로 만들기

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

www.acmicpc.net

 

 

요약 )

  1. 1 이상 100,000 이하의 수를 입력한다
  2. 문제 보기에 주어진 3개의 연산을 적절하게 사용해서 1로 만들어준다
  3. 이 과정에서 사용한 연산의 최소 개수를 출력해 준다.

 

#include <iostream>
#include <algorithm>

using namespace std;

int make_one[1000001];

int main()
{
	int x;
	cin >> x;

	for (int i = 2; i <= x; i++) {
		make_one[i] = make_one[i - 1] + 1;

		if (i % 2 == 0) {
			make_one[i] = min(make_one[i], make_one[i / 2] + 1);
		}
		if (i % 3 == 0) {
			make_one[i] = min(make_one[i], make_one[i / 3] + 1);
		}
	}
	cout << make_one[x] << endl;
	return 0;

}