반응형
C/C++ 언어 초반에 연습문제로 자주 나오는 것이 약수 구하기와 소수 구하기네요. 약수는 나머지 연산자 %의 용법만 잘 알면 손쉽게 구할 수 있습니다.
문제의 링크는 다음과 같습니다.
https://www.acmicpc.net/problem/1037
이번 문제는 어떤수 N에 대하여 1과 자기자신인 N을 제외한 약수들이 순서없이 나열되었을 때, 원래의 수를 알아내는 것입니다. 정석이라면 최소공배수를 찾아야 합니다. 그런데 그렇게 안 하고 더 간단하게 풀 수 있는 방법이 있습니다. 모든 약수들을 나열한다고 했으므로, 가장 작은 수와 가장 큰 수를 찾아서 서로 곱해주면 손쉽게 N을 구할 수 있습니다.
다음은 제가 짠 소스입니다. 소스는 참고용으로 봐주세요.
//----------------------------------------------------------------------------------------
// baekjoon #1037 - Divisors
// - by Aubrey Choi
// - created at 2019-07-03
//----------------------------------------------------------------------------------------
#include <stdio.h>
int main()
{
int n, s;
long long min, max;
scanf("%d%d",&n,&s);
min = max = s;
while(--n)
{
scanf("%d", &s);
if(s < min) min = s;
if(s > max) max = s;
}
printf("%lld\n", min*max);
}
728x90
'Programming > BOJ' 카테고리의 다른 글
#1041 주사위(simple Implement) (0) | 2019.12.28 |
---|---|
백준 #1038 감소하는 수 (2) | 2019.12.27 |
백준 #1036 36진수 (0) | 2019.12.26 |
백준 #1032 명령 프롬프트 (0) | 2019.12.25 |
백준 #1026 보물 (0) | 2019.12.25 |
댓글