[BOJ]백준#1037 Silver 5 약수 ➗(Python, 파이썬)

임준성·2022년 5월 9일
0

백준 Algorithm

목록 보기
6/59
post-thumbnail

백준 1037번
https://www.acmicpc.net/problem/1037


문제




후기

⏰ 풀이시간 30분 ++⏰

문제를 보자마자, 입력 받은 수들을 정렬하여 가장 큰 수를 나머지 수들로 한 번 씩 나눠보고, 나누어 떨어 지지 않으면 가장 큰 수를 한번 씩 더해가는 알고리즘을 떠올렸다.

ex) 가장 큰 수가 300이면 300을 나머지 입력값들로 모두 나누고 나누어 떨어지지 않으면
300+ 300 = 600으로 만든후 다시 나머지 입력값들로 나눈다.

이렇게 하면 나누어 떨어지는 순간 그게 문제의 해답이라 생각하여 코드를 작성했는데, N의 값이 크고 개수가 50개에 달하게 되면 시간이 초과되는 에러코드였다.

위의 알고리즘을 배제하고 생각해본 결과, 비슷한 맥락으로 정렬된 값에서 가장 큰 수와 가장 작은 값을 곱하면 그냥 문제의 답이 나오는 허무한 문제였다.

// 시간 초과가 뜰 때는 조금 더 단순하게 생각해볼것.. //

나의 잘못된 풀이

import sys

input = sys.stdin.readline

n=int(input())

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

li.sort()

k = li[-1]

while True:

    error = 0

    for i in li:

        if k% i !=0:

            error +=1


        if error >=1:

            k+=k
            break


    if error==0:

        print(k)
        exit()






나의 풀이

import sys

input = sys.stdin.readline

n=int(input())

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

li.sort()

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

profile
아무띵크 있이

0개의 댓글