CodingTest/BOJ

[BOJ 1699] 백준 제곱수의 합 풀이 - C++

황수진 2021. 9. 30. 20:27

사용언어 :  C++

 

 

 

 

 

문제풀이

 * dynamic programming 이용하기

자세한 풀이 : https://developing-soosoo.tistory.com/32

 

[BOJ 17626] 백준 Four Squares 풀이 - C++

사용언어 :  C++ 문제풀이  * dynamic programming 이용하기 * int형 배열인 arr에 값 저장 * 순차적으로 접근 ex) arr[26] arr[1]+arr[25], arr[4]+arr[22], arr[9]+arr[15], arr[16]+arr[10], arr[25]+arr[1..

developing-soosoo.tistory.com

 

 

전체코드

 

#include<iostream>
#include<algorithm>
using namespace std;
int N;
int arr[100001];
int main() {
	cin >> N;

	arr[1] = 1;
	int i = 0;
	for ( i = 2; i <= N; i++) {
		int tmp = 100000;
		for (int j = 1; j*j <= i; j++) {
			tmp = min(tmp, arr[i - j * j] + 1);
		}
		arr[i] = tmp;
	}
	cout << arr[N];
}

 

 

 

총평

거의 같은 문제인 four squares를 풀자마자 풀어서 어려움 없이 풀 수 있었다

 


문제 출처

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

 

1699번: 제곱수의 합

어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다

www.acmicpc.net