개발일기

백준 1145번 파이썬 풀이 : 적어도 대부분의 배수 본문

알고리즘 문제풀이/백준

백준 1145번 파이썬 풀이 : 적어도 대부분의 배수

한민기 2021. 10. 6. 22:58
반응형

문제 링크 : https://www.acmicpc.net/problem/1145

 

1145번: 적어도 대부분의 배수

첫째 줄에 다섯 개의 자연수가 주어진다. 100보다 작거나 같은 자연수이고, 서로 다른 수이다.

www.acmicpc.net

문제

다섯 개의 자연수가 있다. 이 수의 적어도 대부분의 배수는 위의 수 중 적어도 세 개로 나누어 지는 가장 작은 자연수이다.

서로 다른 다섯 개의 자연수가 주어질 때, 적어도 대부분의 배수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 다섯 개의 자연수가 주어진다. 100보다 작거나 같은 자연수이고, 서로 다른 수이다.

출력

첫째 줄에 적어도 대부분의 배수를 출력한다.

 

 

# 문제 풀이

1
2
3
4
5
= list(map(int, input().split()))
isTrue = False
temp = 1
count = 0
min_num = min(a)
cs

 

1 : 다섯 개의 자연수를 list 형태로 입력받는다.

5 : 제일 작은 수부터 반복문을 시작하기 위해서 min_num 변수에 a배열의 가장 작은 수를 대입한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
while True:
    for i in range(5):
        if min_num % a[i] == 0:
            count += 1
            if count == 3:
                isTrue = True
 
    if isTrue:
        print(min_num)
        break
    else:
        min_num += 1
        count = 0 
cs

 

2 : 입력받은 수가 5개로 고정되어 있기 때문에 반복문을 5번 실행해준다.

3 : min_num 이 a 배열에 있는 원소로 나눠 떨어지면 count 변수를 증가시키며 count가 3이 될 경우 isTrue 변수를 True로 바꿔준다.

 

8 : isTrue 변수라 True라면 a 배열의 원소로 나눠 떨어지는 수가 3개 있다는 의미가 되므로 min_num을 출력해준다.

 

11 : False라면 min_num 을 1 증가시키고 count 를 0 으로 초기화 해준다.

 

# 전체 코드 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
= list(map(int, input().split()))
isTrue = False
temp = 1
count = 0
min_num = min(a)
 
while True:
    for i in range(5):
        if min_num % a[i] == 0:
            count += 1
            if count == 3:
                isTrue = True
 
    if isTrue:
        print(min_num)
        break
    else:
        min_num += 1
        count = 0 
cs

 

반응형
Comments