• TOC {:toc}

이 글은 백준 온라인 저지의 1037번 문제를 파이썬(Python)으로 풀이한 것을 모아놓은 글입니다.

일종의 연습 기록이며 제가 정답을 받은 코드와 참고할만한 다른 코드를 같이 기록합니다. 필요한 경우 코드에 대한 해설을 기록합니다만 코드는 통과했어도 해설은 틀릴 수 있기 때문에 가볍게 참고해주시길 부탁드립니다. 피드백은 편하신 방법으로 자유롭게 주시면 감사하겠습니다.

2021.04.23

메모리 시간 코드 길이
28776 KB 76 ms 140 B
N = int(input())
# 약수를 리스트로 받아 정렬한 뒤
f = sorted(list(map(int, input().split())))

# 입력 받은 약수의 개수가 홀수이면
if N % 2:
    # 정 중앙의 하나의 수를 두 번 곱한 것을,
    print(f[N // 2] ** 2)
# 짝수이면
else:
    # 중앙에 있는 두 수 곱한 것을 출력한다.
    print(f[N // 2 - 1] * f[N // 2])

아이디어 & 풀이

짝수는 2로 나눈 나머지가 0, 홀수는 1이기 때문에 이걸 True / False 조건으로 이용한다.

피드백

  • 경우를 나눌 필요 없이 첫 값과 마지막 값을 곱하면 됐었다.
    • 약수가 한 개인 경우도 문제되지 않는다.
    • 그럼 처음에 입력 개수를 받을 필요도 없다.
  • 또는 sort() 없이 최솟값과 최댓값을 곱해도 된다.

참고 답안 1

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

f.sort()
# f의 첫 값과 마지막 값을 곱한다.
print(f[0]*f[-1])

참고 답안 2

input()
A = [*map(int, input().split())]
print(min(A) * max(A))