문제
https://www.acmicpc.net/problem/1037
풀이
오름차순으로 정렬하고, 첫 번째 인덱스와 마지막 인덱스의 수를 곱해 해당 수를 찾았다.
약수가 하나뿐일 때는 해당 수를 제곱해서 바로 출력하고 조기종료하는 방식으로 구현했다.
소스코드
#include <iostream>
using namespace std;
int main()
{
int num_divisor;
cin >> num_divisor;
int divisor_list[num_divisor];
// int* realDivisor = new int[num_divisor];
for(int i=0; i<num_divisor; i++) {
cin >> divisor_list[i];
}
if(num_divisor == 1) {
cout << divisor_list[0] * divisor_list[0] << endl;
return 0;
}
int min_index, temp;
for(int i=0; i<num_divisor-1; i++) {
min_index = i;
for(int j=i+1; j<num_divisor; j++) {
if(divisor_list[min_index] > divisor_list[j]) {
min_index = j;
}
}
temp = divisor_list[i];
divisor_list[i] = divisor_list[min_index];
divisor_list[min_index] = temp;
}
cout << divisor_list[0] * divisor_list[num_divisor-1] << endl;
return 0;
}
발전
요즘 정렬하는 문제를 다 선택정렬로만 풀고있다. 다른 정렬 방식도 사용해봐야겠다.
'Problem Solving' 카테고리의 다른 글
[백준/BO] 2822. NAJBOLJIH 5 (C++) (0) | 2024.05.29 |
---|---|
[백준/BOJ] 2592. 대표값 (C++) (0) | 2024.05.22 |
[백준/BOJ] 1292. 쉽게 푸는 문제 (C++) (0) | 2024.05.22 |
[백준/BOJ] 10162. 전자레인지 (C++) (0) | 2024.05.14 |
[백준/BOJ] 5063. Nasty Hacks (C++) (0) | 2024.05.14 |