약수
문제 링크: https://www.acmicpc.net/problem/1037
N의 진짜 약수를 주어지면 그 약수를 가지는 정수 N을 찾는 문제이다.
이는 정말 어려운 문제가 아니다.
N이 가지는 약수 중 가장 작은 수는 N이 가지는 약수 중 가장 큰 수와 매치가 된다.
예를 들면, 문제에서는 1과 N을 제외한 수를 준다고 했으나 1과 N을 포함한다면,
1이 가장 작은 수, N이 가장 큰 수가 될 것이다.
이 둘이 매치가 되어 1 * N = N이 된다.
그렇다면 1과 N을 제외한 수 중 가장 작은 수를 구하면, 그와 매치되는 수는 자연스레 가장 큰 수가 됨을 이해할 수 있다.
따라서, 입력되는 수 중 가장 작은 수와 가장 큰 수를 찾고 곱해주면 끝이다.
#include<iostream>
using namespace std;
#define max(a, b) (a > b ? a : b)
#define min(a, b) (a < b ? a : b)
int main() {
int N;
cin >> N;
int max_ = 0, min_ = 10000000;
while (N--) {
int i;
cin >> i;
max_ = max(max_, i);
min_ = min(min_, i);
}
cout << max_ * min_ << endl;
return 0;
}
'ProblemSolving' 카테고리의 다른 글
[BOJ] 1026_보물 (0) | 2021.01.20 |
---|---|
[BOJ] 1021_회전하는 큐 (0) | 2021.01.19 |
[BOJ] 1015_수열정렬 (0) | 2021.01.18 |
[BOJ] 1002_터렛 (0) | 2021.01.17 |
[BOJ] 1010_다리 놓기 (2) | 2021.01.15 |
최근댓글