본문 바로가기

programming/algorithm

[algorithm] 백준 1037 - 약수

[algorithm] 백준 1037 - 약수

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 백준 1037번 문제 - 약수 의 풀이를 살펴보도록 하겠습니다.

 

풀이에 사용한 언어는 Python3 입니다.

 

문제 해석과 풀이 다 함께 살펴보시죠.

 

algorithm
알고리즘


백준 BAEKJOON 1037

 

백준 1037번 약수 문제 보러가기

 

반응형

 

문제 해석

 

어떠한 숫자의 약수가 주어지면 약수들을 가지고 그 숫자를 유추해내는 문제입니다.

약수의 개수는 50개보다 작거나 같은 개수가 주어지는데 약수의 개수가 몇개이든 우리가 살펴봐야할 약수는

딱 두개입니다.

힌트 : 약수를 크기순은로 정렬시킨 후 잘 살펴봅시다.

 

풀이

 

# 1037 약수
N = int(input())

num_list = list(map(int, input().split()))

print(max(num_list) * min(num_list))

 

풀이 해석 및 팁

 

풀이를 살펴보면 약수들의 리스트를 만들어서 해당 리스트에서 최댓값과 최솟값을 곱한 값을 출력합니다.

이게 바로 문제가 원하는 정답인데요.

20이라는 숫자를 예로 들어서 설명을 해보자면

20의 약수는 [1 - 2 - 4 - 5 - 10 - 20] 총 6개입니다.

크기순으로 정렬한 상태에서 맨앞과 맨뒤를 짝으로 지어주면 곱했을 때 해당 숫자가 나오는 것을 볼 수 있습니다.

문제에서는 1과 해당 숫자는 제공하지 않기 때문에 약수 리스트에서 최댓값과 최솟값만 찾아내면 되겠습니다.

여기까지 백준 1037번 약수 문제 풀이였습니다.


이번 문제의 정답률은 55% 정도입니다.

약수의 성질을 살짝만 생각해보면 쉽게 해결이 가능한 문제였습니다.

궁금한 점이 있으시다면 댓글로 남겨주세요.

감사합니다.

반응형