본문 바로가기
백준

[백준] 1037번 : 약수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 12. 8.
728x90
반응형

 

 

1037번: 약수

첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

해당 문제는 진짜 약수를 보고 N을 구하는 문제이다.

주어지는 진짜 약수는 1과 N을 제외하고 입력받아지기 때문에 약수를 정렬했을 때 제일 작은 수와 제일 큰 수를 곱하면 N이 된다.

그 이유는 원래 N의 약수를 구하면 제일 작은 약수가 1이고, 제일 큰 약수가 N이 되는데 입력받은 진짜 약수에는 1과 N이 없다.

하지만 전체 약수에서 1과 N을 제거했을 때, 그다음 제일 작은 수와 제일 큰 수의 곱 또한 N이 되기 때문에 진짜 약수를 정렬하여 각 제일 작은 약수와 제일 큰 약수를 곱하면 N이 된다.

 

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 진짜 약수의 개수를 입력받고 N = int(sys.stdin.readline())
  3. 진짜 약수를 입력받아 리스트로 저장한다. li = list(map(int, sys.stdin.readline().split()))
  4. 약수를 오름차순으로 정렬하고 li.sort()
  5. 제일 작은 약수와 제일 큰 약수를 서로 곱하면 N가 된다. print(li[0] * li[-1])
반응형

3. 소스코드

import sys

N = int(sys.stdin.readline())
li = list(map(int, sys.stdin.readline().split()))

li.sort()
print(li[0] * li[-1])
728x90
반응형