Baekjoon Online Judge

백준 1037번) 약수

judy1467 2023. 1. 13. 14:23

본문의 코드보다 더 효율적인 코드가 분명 존재합니다.

참고만 해주시면 감사하겠습니다.

코드 지적은 언제나 환영입니다.


풀이

예제에서 모든 약수를 줬기 때문에 풀이는 간단하다.

가장 큰 약수는 N/가장 작은 약수 이기 때문에

가장 큰 약수 * 가장 작은 약수 를 통해 쉽게 N을 구할 수 있다.

 

코드

#include "iostream"
#include "algorithm"
#include "cstdlib"

using namespace std;

bool compare(int a, int b){
    return a>b;
}

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

    int tc;
    cin >> tc;

    int *list = (int*)malloc(sizeof(int)*tc);
    if(list == nullptr) return 1;

    for(int i = 0 ; i < tc ; i++){
        cin >> list[i];
    }

    sort(list, list+tc, compare);

    cout << list[0] * list[tc-1] << "\n";
    
    free(list);
    
    return 0;
}