알고리즘 연습

C++ 1977 완전제곱수

728x90

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

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	int m, n;
	cin >> m >> n;
	int arr[10000] = { 0 };
	int sum = 0;
	int min = 10000;

	for (int i = 1; i < n; i++) {
		arr[i] = i * i;
	}

	for (int i = 1; i <= n; i++) {
		if (m<=arr[i]&&arr[i]<=n) {
			sum += pow(i,2);
			if (min > pow(i,2))
				min = pow(i,2);
		}	
	}
	if (sum == 0)
		cout << -1<<'\n';
	else
		cout << sum << '\n' << min;
}

처음에 sqrt를 사용해서 풀어보려 했지만 어찌해야하는지 감이 안잡혀서 다른블로그를 참고했다.

해당 블로그 글의 답으로 해결하려했으나 오류가있어 pow를 사용해 답을 다시 구했다.

https://jaynamm.tistory.com/entry/1977%EB%B2%88-%EC%99%84%EC%A0%84%EC%A0%9C%EA%B3%B1%EC%88%98

 

[백준 알고리즘] 1977번 : 완전제곱수

문제 M과 N이 주어질 때 M이상 N이하의 자연수 중 완전 제곱수인 것을 모두 골라 그 합을 구하고 그중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60 이상 100 이하의 자연수

jaynamm.tistory.com

코드중의 i는 결국 제곱근이었고 문제에서 원하는 답은 완전제곱수의 합과 그의 최소값이어서 제곱을 진행했다.

 

728x90

'알고리즘 연습' 카테고리의 다른 글

C++ 10984 내학점을 구해줘  (0) 2021.10.15
C++11098 첼시를 도와줘  (0) 2021.10.11
C++ 1541 잃어버린 괄호  (0) 2021.10.07
C++ 1931 회의실 배정  (0) 2021.10.07
C++ 11047 동전0 (그리디알고리즘)  (0) 2021.10.06