티스토리 뷰

Algorithm/BOJ

백준 1977번 C++

poopooreum 2023. 8. 3. 20:30
반응형
백준 1977번 최소공배수

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

1977번: 완전제곱수

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

www.acmicpc.net



정답 코드

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
vector<int>arr;
int main() {
	int n;
	int k;
	cin >> n >> k;
	for (int x = 0; x < 10000; x++) {
		int d = x * x;
		if (d > 10000)
			break;
		arr.push_back(d);
	}
	sort(arr.begin(), arr.end());
	int count = 0, res, sum = 0;;
	for (int x = 0; x < arr.size(); x++) {
		if (count == 0 && arr[x] >= n && arr[x] <= k) {
			count++;
			res = arr[x];
			sum += res;
		}
		else if (count > 0 && arr[x] >= n && arr[x] <= k) {
			count++;
			sum += arr[x];
		}
	}
	if (count >= 1)
		cout << sum << endl << res;
	else
		cout << -1;
}

문제 풀이

먼저 0이상 10000이하의 제곱수를 찾아서 배열에
삽입합니다. 주어진 범위 내에서 제곱수가 있는지 탐색하면서 있으면 최솟값과 합을 구하고 없으면 -1을 출력하면 됩니다.

반응형

'Algorithm > BOJ' 카테고리의 다른 글

백준 1990번 C++  (0) 2023.08.04
백준 1978번 C++  (0) 2023.08.04
백준 1940번 C++  (0) 2023.08.03
백준 1934번 C++  (0) 2023.08.03
백준 1932번 C++  (0) 2023.08.03
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함