본문 바로가기

Algorithm/Brute Force

(C++) - 백준(BOJ) 6975 : Deficient, Perfect, and Abundant

반응형

 

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

 

6975번: Deficient, Perfect, and Abundant

Write a program that repeatedly reads a positive integer, determines if the integer is deficient, perfect, or abundant, and outputs the number along with its classification. A positive integer, n, is said to be perfect if the sum of its proper diviso

www.acmicpc.net

brute force문제였습니다.

📕 풀이방법

📔 입력 및 초기화

test case의 개수 t를 선언 후 입력해줍니다. t만큼 while loop를 수행하며 n, sum을 선언해줍니다.

📔 풀이과정

1. 자신의 수를 제외한 약수를 vector 형태로 반환해주는 getDiv함수를 수행합니다. 그 결과 값을 div변수에 저장합니다.2. div의 list들을 getSum함수의 인자로 넘겨 합을 구해줍니다. 이 결과를 sum에 저장합니다.

 

📔 정답출력

조건에 따라 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;

vector <int> getDiv(int n){
    vector <int> tmp;
    for(int i = 1; i < n; i++) {
        if(n%i == 0) tmp.push_back(i);
    }
    return tmp;
}

int getSum(vector <int> div){
    int sum = 0;
    for(auto d : div) sum += d;
    return sum;
}

int main(){
    int t;
    cin >> t;
    while(t--){
        int n, sum;
        cin >> n;
        vector <int> div = getDiv(n);
        sum = getSum(div);
        if(sum > n) cout << n << " is an abundant number.";
        else if(sum == n) cout << n << " is a perfect number.";
        else cout << n << " is a deficient number.";
        cout << '\n' << '\n';
    }
}