본문 바로가기
백준 문풀

1463

by 기록을안하면바보 2024. 7. 22.

1 만들기

 

 

백준 문제 중에 제일 많이 틀린 것 같다 .. 이 문제를 이렇게 많이 푼 사람은 나밖에 없을 것,,,

 

시간초과 문제 때문에 배열에 저장을 해줘야겠다는 생각까지는 했는데,,

처음에 그냥 int 일차원 배열을 쓰는데 크기가 10^6이라 배열이 그 크기까지 클 수 없었나봄. 그래서 vector배열을 써줬다

2의 배수이면서 3의 배수인 경우를 생각을 못해서 4% 에서 틀림 떠서 우울했다..

 

또 1일때 당연히 1일 줄 알았는데 0이더라. 당연함 제목부터가 1만들기임.

 

이 문제 푼사람 정말 많던데 나는 어려웠다 

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

int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	int n;
	cin >> n;
	vector<int> graph(1000001,0);

	graph[1] = 1;
	graph[2] = 1;
	graph[3] = 1;

	for (int i = 4;i < n+1;i++) {
		int flag = 0;
		if (i % 6 == 0) {
			flag = (graph[i / 2] < graph[i / 3]) ? 2 : 3;
		}
		else if (i % 2 == 0) {
			flag = 2;
		}
		else if (i % 3 == 0) {
			flag = 3;
		}


		if(flag==0) {
			graph[i] = 1 + graph[i - 1];
		}
		else {
			graph[i] = min(1 + graph[i - 1], 1 + graph[i / flag]);
		}
	

	}

	cout << graph[n];
	return 0;
}

'백준 문풀' 카테고리의 다른 글

백준 6588  (0) 2024.07.31
2745  (0) 2024.07.30
11051  (0) 2024.07.22
백준 1485  (2) 2024.07.15
1004  (0) 2024.07.02