반응형
문제
다섯 개의 자연수가 있다. 이 수의 적어도 대부분의 배수는 위의 수 중 적어도 세 개로 나누어 지는 가장 작은 자연수이다.
서로 다른 다섯 개의 자연수가 주어질 때, 적어도 대부분의 배수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 다섯 개의 자연수가 주어진다. 100보다 작거나 같은 자연수이고, 서로 다른 수이다.
출력
첫째 줄에 적어도 대부분의 배수를 출력한다.
예제 입력 130 42 70 35 90
|
예제 출력 1210
|
예제 입력 21 2 3 4 5
|
예제 출력 24
|
예제 입력 330 45 23 26 56
|
예제 출력 31170
|
예제 입력 43 14 15 92 65
|
예제 출력 4195
|
풀이
문제를 빠르게 해결하기 위해 수들의 최대공약수를 찾고, 다시 최대공배수를 반복하여 찾는 방식으로 풀 수 있다.
하지만 입력되는 수들의 최대 크기가 100으로, 매우 낮다.
따라서 그냥 숫자를 하나하나 올려가며 3개 이상의 수로 나누어 떨어지는지 확인하는 브루트 포스를 썼다.
다만, 숫자가 최대 크기가 1000 정도로만 되어도 아래 방법으로 풀이는 쉽지 않을 것이다.
nums = list(map(int,input().split()))
n = 1
while True:
cnt = 0
for i in nums:
if n%i==0:
cnt+=1
if cnt>=3:
print(n)
break
n+=1
반응형
'알고리즘 연습 > 브루트 포스' 카테고리의 다른 글
[🥈5 / 백준 1969 / 파이썬] DNA (0) | 2022.08.15 |
---|---|
[🥈2 / 백준 2615 / 파이썬] 오목 (0) | 2022.04.27 |
[🥉2 / 백준 14697 / 파이썬] 방 배정하기 (0) | 2022.04.18 |
[🥇1 / 백준 1285 / 파이썬] 동전 뒤집기 (0) | 2022.04.14 |
[🥉1 / 백준 9506 / 파이썬] 약수들의 합 (0) | 2022.01.28 |