BAEKJOON 1145 적어도 대부분의 배수

기윤·2022년 5월 30일
0
post-custom-banner

"적어도 대부분의 배수" 가 뭔 말인가 했는데 세 수 이상에게 배수이면 된다는 뜻이다.

처음에 내가 생각했던 방법: 다섯 수 돌아가면서 배수를 전부 리스트에 담기. 리스트 안에 같은 수가 3개 중복되면, 배수가 세번 겹쳤다는 것이므로 그것을 출력하기.
이렇게 해도 답은 제대로 나오지만, 시간 초과가 났다.
근데 저렇게 할 필요가 없었다. 쉬운 방법이 있었다.

그냥 while문으로 1부터 돌려서, 다섯 수 중에 배수 세번 만족하면, 그걸 출력하면 된다.
1부터 돌리면 효율이 떨어지니까 다섯 수 중에 가장 작은 수부터 돌리거나, 세번째 수부터 돌리면 된다.


CODE

num_list = list( map(int, input().split())) # 입력
num_list.sort() # 작은 수 부터 시작하도록 정렬
i = num_list[2] # 비교 초기값 : 3번째 수 (세 수의 배수를 구하는 것이므로)
while True:
    count = 0
    for num in num_list:
        if i % num == 0:
            count += 1 # i가 num의 배수이면 카운트.
    # 3번 중복되면 "적어도 대부분의 배수" 조건을 만족하게 된다.
    if count >= 3:
        print(i) # 출력
        break
    i += 1
profile
코딩 기록
post-custom-banner

0개의 댓글