[BOJ] 1037번 진짜 약수로 구하기

호호빵·2022년 8월 8일
0

Algorithm

목록 보기
6/46
import math

N = int(input())    # 4
div = N
div_list = []

while div > 0:
    M = map(int, input().split())          # 2, 3, 4, 6
    for i in M:
        div_list.append(i)
        div -= 1

prod = math.prod(div_list)                # 144
f_prod = prod ** ((N//2) ** -1)           # 144 ** 0.5
print(int(f_prod))

# (N//2) ** -1 과정에서 소수가 나옴
# 9의 진짜 약수 3 등에 대한 조건 부족

다시풀기

위의 풀이가 말도 안된다는 걸 알지만 우선 답을 구해보고 싶었기에 강행했었다.
그냥 편하게 가보기로 했다.

1. 입력 값을 나눠서 저장한다
2. 순서대로 줄 세운다
3. 1이 아닌 경우에 처음 값과 끝 값을 곱한 것을 출력한다.
N = int(input())    # 4
div = N
div_list = []

while div > 0:
    M = map(int, input().split())          # 2, 3, 4, 6
    for i in M:
        div_list.append(i)
        div -= 1

div_list.sort()

if N == 1:
    print(div_list[0] * div_list[0])
else:
    print(div_list[0] * div_list[-1])

  • 맞았습니다!가 뜨고 다른 사람들 코드를 살펴봤다.

N = int(input())    
M = list(map(int, input().split()))
M.sort()

if N == 1:
    print(M[0] ** 2)
else:
    print(M[0] * M[-1])

...


너무 간단해서 짜증나?

맨 처음방식으로 풀었을 때 틀려서 다행이다!
파이썬 공부 열심히 해야지! 파이썬 짱이다!

profile
하루에 한 개념씩

0개의 댓글