SKYLIGHT STUDIO

[C++][1773] 폭죽쇼 본문

Computer Programming/Coding Test(C++)

[C++][1773] 폭죽쇼

SKY_L 2024. 10. 8. 23:07

문제

학생들은 3주가 지난 기념으로 매점에서 1월 1일이 지나 싸게 파는 폭죽을 사서 터뜨리고 있다.
폭죽쇼를 하는 동안 N명의 학생들이 폭죽을 터뜨린다. 그리고 이 N명의 학생은 각각 일정한 주기로 폭죽을 터뜨린다. 물론 이 주기는 학생들마다 같을 수도, 다를 수도 있다. 그리고 우리는 초 단위로 관찰을 하고, 폭죽 역시 초 단위로 터진다.
폭죽쇼가 끝날 때까지 얼마나 많은 시간동안 밤하늘에 폭죽이 터지는 것을 볼 수 있는지 궁금해 하는 조교를 도와주자.

입력

첫 줄에 폭죽을 터뜨리는 학생의 수 N(1 ≤ N ≤ 100)과 폭죽쇼가 끝나는 시간 C(1 ≤ C ≤ 2,000,000)가 주어진다. 그 다음 N개의 줄에는 학생들이 폭죽을 터뜨리는 주기가 한 줄에 하나씩 주어진다. 주기는 1보다 크거나 같고, C보다 작거나 같은 자연수이다.

출력

폭죽쇼가 시작되고 끝날 때까지 밤하늘에 폭죽을 볼 수 있는 총 시간을 출력한다.

 

#include<iostream>
#include<vector>
using namespace std;



int main() {
    
    int students;
    int times;

    cin >> students >> times;

    vector<int> period(students);
    vector<bool> num(times + 1, false); 

    for (int i = 0; i < students; i++) {
        cin >> period[i];
    }

    for (int i = 0; i < period.size(); i++) {

        int a = period[i];

        for (int j = 0; j <= times; j += a) {
            num[j] = true;
        }
    }

    int f_num = 0;
    for (int i = 1; i <= times; i++) {
        if (num[i]) {
            f_num++;
        }
    }

    cout << f_num << endl;
}

 

for문 응용을 생각도 못했다.

저것만 생각났으면 빠르게 풀었을 듯.

'Computer Programming > Coding Test(C++)' 카테고리의 다른 글

[C++ 리바이브] 범위 기반 for 루프  (0) 2024.11.02
[C++ 리바이브] Map  (2) 2024.10.30
[C++/1076] 저항  (0) 2024.10.08
[C++][2547] 사탕 선생 고창영  (1) 2024.10.02
[C++ 리바이브] C++ 동적 배열  (0) 2024.10.02