백준_1037_약수_파이썬

Today Jeeho Learned·2022년 9월 8일
0

알고리즘

목록 보기
13/38
post-thumbnail

문제 출처

https://www.acmicpc.net/problem/1037

내 답안


def find_number():
    N = int(input())
    A = list(map(int, input().strip().split(' ')))
    A.sort()
    C = A[0] * A[-1]
    print(C)

find_number()

정리

처음에 문제가 제대로 이해가 안되서 차근차근 꼼꼼하게 읽어보았다.
먼저 1과 진짜 수를 제외한 약수의 개수를 입력하고, 두번째로 둘을 제외한 수를 입력하여 진짜 수를 구하는 것인데, 왜 약수의 개수를 입력하나 궁금했다. 트릭이 있었던 걸까? 그냥 배제하고 풀고나서 검사를해보니 정답으로 채택되었다.

  1. 약수의 개수를 입력받는다.
  2. 약수를 입력받는다.
  3. 입력받은 약수를 오름차순으로 정렬하여, 맨처음수와 마지막수를 곱하여 출력한다.
  4. 출력한 수가 진짜 수이다.

어떤 수의 약수들은 오름차순으로 정렬해놓으면 보통 맨처음수와 마지막수가 같음을 알고 있었다.
근데 약수의 개수를 입력받길래.. 반복문을 통해 하나하나 검증해야하나, 이약수의 수가 1와 진짜수를 제외한 갯수와 동일하다는 것을 검증해줘야 하나 고민했었다.

적용해본 것

  • A = list(map(int, input().strip().split(' ')))
    정수형 숫자를 한번에 입력받아서 배열로 만들어주는 것을 사용해보았다. 추가로 strip()학습한 것을 적용해서 앞뒤의 공백열을 없애주면서 정수를 제대로 인식하게 해주었다.

다른 풀이

n = int(input())
a = list(map(int,input().split()))
print(min(a)*max(a))

입력을 받은후, 최소값과 최대값을 바로 곱해줘서 출력해주는 방법도 있었다.

profile
기록해야 (살아)남는다 !

0개의 댓글