본문 바로가기

백준/C++

[Baekjoon/C++] 적어도 대부분의 배수 1145번

Baekjoon Online Judge

문제로 이동

 

문제

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

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

 

입력

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

 

출력

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

 


예제 입력 예제 출력
30 42 70 35 90 210
1 2 3 4 5 4
30 45 23 26 56 1170
3 14 15 92 65 195

풀이

#include <iostream>
using namespace std;

int main() {
    int num[5]; // 다섯 개의 자연수 
    int smallNum = 101; // 입력한 수 중 가장 작은 수 
    int small = 100000000; // 가장 작은 대부분의 배수 저장

    // 입력
    for (int i = 0; i < 5; i++) {
        cin >> num[i];

        // 입력한 숫자 중에서 가장 작은 수 찾기
        if (num[i] < smallNum)
            smallNum = num[i];
    }

    // 가장 작은 대부분의 배수 찾기
    for (int i = smallNum; ; i++) {
        // n이 num[]의 숫자로 나누어 떨어지는 횟수 구하기
        int count = 0;
        for (int j = 0; j < 5; j++)
            if (i % num[j] == 0) count++;

        // 대부분의 배수 찾았을 때
        if (count >= 3) {
            small = i;
            break;
        }
    }

    // 출력
    cout << small;

    return 0;
}

입력한 숫자 중 가장 작은 수부터 1씩 증가시키면서 해당 숫자가 입력한 5개의 숫자 중 3개 이상의 수의 배수인지 확인하는 방법으로 대부분의 배수를 찾았다.

'백준 > C++' 카테고리의 다른 글

[Baekjoon/C++] 운동 1173번  (0) 2022.04.29
[Baekjoon/C++] 농구 경기 1159번  (0) 2022.04.29
[Baekjoon/C++] 하얀 칸 1100번  (0) 2022.04.21
[Baekjoon/C++] 저항 1076번  (0) 2022.04.21
[Baekjoon/C++] 나누기 1075번  (0) 2022.04.21