※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 1977번 완전제곱수이다.
문제는 아래 링크를 확인하자.

www.acmicpc.net/problem/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

+ Recent posts