※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 1977번 완전제곱수이다.
문제는 아래 링크를 확인하자.
1977번: 완전제곱수
M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완
www.acmicpc.net
글쓴이는 정해진 범위의 제곱수 배열을 먼저 만들어서 문제를 해결했다.
아래는 제출한 소스코드이다.
#include <iostream>
using std::cin;
using std::cout;
int main()
{
int sqr[101]; // 0부터 10000까지의 제곱수 array 만들기
for (int i = 0;i < 101;i++) {
sqr[i] = i * i;
}
int x, y;
cin >> x >> y;
int ans = 0;
int minimum = 0;
bool chk = true;
for (int i = 0;i < 101;i++) { // x 이상 y 이하 제곱수를 찾아 연산
int n = sqr[i];
if (x <= n and n<=y) {
ans += n;
if (chk) { // 범위 내 가장 작은 제곱수는 최초 한번만
minimum = n;
chk = false;
}
}
}
if (ans == 0) { // 0은 아무 제곱수도 더하지 않았을 때만 나올 수 있다
cout << -1;
}
else { // 제곱수가 하나라도 더해졌을 때
cout << ans << "\n" << minimum;
}
return 0;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 10815 // C++] 숫자 카드 (0) | 2021.01.05 |
---|---|
[BOJ 1026 // C++] 보물 (0) | 2021.01.04 |
[BOJ 1475 // C++] 방 번호 (0) | 2021.01.02 |
[BOJ 10988 // C++] 팰린드롬인지 확인하기 (0) | 2021.01.01 |
[BOJ 10808 // C++] 알파벳 개수 (0) | 2020.12.31 |