백준 - 1037 (Python) - 약수

박준영·2021년 6월 16일
0
post-thumbnail

약수

백준 1037

문제가 한 줄이라 마음의 평화를 얻었다.

이 문제에서 말하는 "진짜 약수"란 자연수 N의 약수 중 1과 N자기 자신을 제외한 나머지 약수들을 의미한다.

자연수 12로 예를 들자면 원래의 12의 약수는 (1,2,3,4,6,12)와 같지만, 위 문제의 "진짜 약수"들은 1과 12를 제외한 (2,3,4,6)이 되겠다.

입력값으로 첫째 줄에 진짜 약수의 개수, 둘째 줄에는 진짜 약수들이 입력이 되는데,

어떤 수에 대한 진짜 약수들을 일일이 써보면 한 가지 규칙을 알아낼 수 있다.

진짜 약수들을 오름차순으로 정렬하고, 첫번째 수와 마지막 수를 곱하면 자연수 N 된다는 것이다.

규칙을 찾는 문제였던 것.. 자연수를 주고 진짜 약수를 구하라 했으면 난이도가 300배 정도 상승하지 않았을까?

ex) 12 = 2, 3, 4, 6 -> (2 * 6 = 12)

ex) 24 = 2, 3, 4, 6, 8, 12 -> (2 * 12 = 24)

그러므로.. 답안 코드는 간단하다.

N = int(input())
A = list(map(int, input().split()))

max_num = max(A)
min_num = min(A)

print(max_num * min_num)

인풋 값 중 가장 작은 값과 가장 큰 값을 곱하면 끝이다.

  • max(iterable) 괄호( ) 안에 리스트, 문자 열등 반복 가능한 자료형을 넣으면 가장 큰 값을 반환해준다.
  • min(iterable) 괄호( ) 안에 리스트, 문자 열등 반복 가능한 자료형을 넣으면 가장 작은 값을 반환해준다.
  • iterable(반복할 수 있는)이란 list, dict, set, str, bytes, tuple, range와 같이 반복이 가능한 데이터 타입 즉, member를 하나씩 반환(접근)할 수 있는 데이터 타입을 말한다.

0개의 댓글