Python_알고리즘

[Python] 백준 1037 약수

hahihuree 2021. 7. 10. 02:46
문제 바로가기

   문제분석   

# n의 진짜 약수는 1과 자기 자신을 제외한 약수이다.

# 예를 들어 10의 약수는 1, 2, 5, 10이지만 진짜 약수는 2, 5뿐이다.

# 같은 방법으로 20은 1, 2, 4, 5, 10, 20이지만 진짜 약수는 2, 4, 5, 10이다.

# 문제에서는 진짜 약수가 주어졌을 때, n을 구하는 프로그램을 작성하라고 했다.

# 약수가 순서대로 정렬이 되었을 때, 제일 처음 나오는 약수와 제일 끝에 나오는 약수를 곱하면 n이 나오는 방법을 이용한다. 

 

 

   문제풀이   

n = int(input())

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

real.sort()

print(real[0] * real[-1])

# 약수의 개수를 입력값으로 받는다.

# 입력값으로 받는 약수들을 변수에 저장한다.

  • 공백을 기준으로 들어오니 split( )메소드를 사용해 갈라주고,
  • map함수를 통해 들어온 값들을 모두 int(정수형)으로 바꿔준다.
  • 그리고 리스트의 메소드인 sort( )를 쓰기위해 list로 담아준다.

# 이렇게 정리된 변수를 sort( )함수로 오름차순으로 정렬한다.

# 그리고 제일 첫 인덱스와 가장 마지막 인덱스를 곱하면 약수이므로 출력한다.

 


   추가내용   

# 리스트를 정렬 sort( )

  • 기본값은 오름차순이며, reverse=True를 인자로 주면 내림차순 정렬이 된다.
  • 혹은 sort( )대신 reverse( )를 사용하면 된다.