λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
✨ Algorithm

[λ°±μ€€/C++] 13458번: μ‹œν—˜ 감독

by nitronium102 2022. 6. 26.

문제

총 N개의 μ‹œν—˜μž₯이 있고, 각각의 μ‹œν—˜μž₯λ§ˆλ‹€ μ‘μ‹œμžλ“€μ΄ μžˆλ‹€. i번 μ‹œν—˜μž₯에 μžˆλŠ” μ‘μ‹œμžμ˜ μˆ˜λŠ” Aiλͺ…이닀.

감독관은 총감독관과 λΆ€κ°λ…κ΄€μœΌλ‘œ 두 μ’…λ₯˜κ°€ μžˆλ‹€. 총감독관은 ν•œ μ‹œν—˜μž₯μ—μ„œ κ°μ‹œν•  수 μžˆλŠ” μ‘μ‹œμžμ˜ μˆ˜κ°€ Bλͺ…이고, 뢀감독관은 ν•œ μ‹œν—˜μž₯μ—μ„œ κ°μ‹œν•  수 μžˆλŠ” μ‘μ‹œμžμ˜ μˆ˜κ°€ Cλͺ…이닀.

각각의 μ‹œν—˜μž₯에 총감독관은 였직 1λͺ…λ§Œ μžˆμ–΄μ•Ό ν•˜κ³ , 뢀감독관은 μ—¬λŸ¬ λͺ… μžˆμ–΄λ„ λœλ‹€.

각 μ‹œν—˜μž₯λ§ˆλ‹€ μ‘μ‹œμƒλ“€μ„ λͺ¨λ‘ κ°μ‹œν•΄μ•Ό ν•œλ‹€. μ΄λ•Œ, ν•„μš”ν•œ 감독관 수의 μ΅œμ†Ÿκ°’μ„ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫째 쀄에 μ‹œν—˜μž₯의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진닀.

λ‘˜μ§Έ μ€„μ—λŠ” 각 μ‹œν—˜μž₯에 μžˆλŠ” μ‘μ‹œμžμ˜ 수 Ai (1 ≤ Ai ≤ 1,000,000)κ°€ 주어진닀.

μ…‹μ§Έ μ€„μ—λŠ” B와 Cκ°€ 주어진닀. (1 ≤ B, C ≤ 1,000,000)

좜λ ₯

각 μ‹œν—˜μž₯λ§ˆλ‹€ μ‘μ‹œμƒμ„ λͺ¨λ‘ κ°λ…ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ κ°λ…κ΄€μ˜ μ΅œμ†Œ 수λ₯Ό 좜λ ₯ν•œλ‹€.

 

풀이

각 μ‹œν—˜μž₯λ§ˆλ‹€ 총감독관은 1λͺ…μ”© ν•„μˆ˜λ‘œ λ°°μΉ˜ν•΄μ•Ό ν•˜λ©°, μ΄κ°λ…κ΄€λ§ŒμœΌλ‘œ κ°μ‹œκ°€ μΆ©λΆ„ν•œ 경우 뢀감독관은 ν•„μš” μ—†λ‹€.

1. 각 μ‹œν—˜μž₯λ§ˆλ‹€ B(μ΄κ°λ…κ΄€μœΌλ‘œ κ°μ‹œν•  수 μžˆλŠ” 인원) λΉΌκΈ°

2. μ‘μ‹œμžκ°€ 남은 경우 C(뢀감독관이 κ°μ‹œν•  수 μžˆλŠ” 인원)으둜 λ‚˜λˆ„κΈ°

3. μ‘μ‹œμž μˆ˜κ°€ C둜 λ‚˜λˆ„μ–΄ 떨어지지 μ•ŠλŠ” 경우 κ³ λ €ν•˜κΈ°

 

+ μ‹œν—˜μž₯의 개수, 각 μ‹œν—˜μž₯의 μ‘μ‹œμž μˆ˜κ°€ μ΅œλŒ€λ‘œ 주어지고 B와 Cκ°€ μ΅œμ†Œλ‘œ μ£Όμ–΄μ§€λŠ” 경우, κ²°κ³Όκ°€ int λ²”μœ„λ₯Ό λ„˜μ„ 수 있기 λ•Œλ¬Έμ— long long을 μ‚¬μš©ν•œλ‹€.

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

int main() {
    int n, b, c;
    long long num = 0;
    cin >> n;
    vector<int> student(n);

    // μž…λ ₯
    for (int i=0; i<n; i++)
        cin >> student[i];
    cin >> b >> c;

    // μ—°μ‚°
    for (int i=0; i<n; i++){
        int cnt = student[i];
        // 총감독관
        cnt -= b;
        num++;

        // μ΄κ°λ…κ΄€λ§ŒμœΌλ‘œλ„ μΆ©λΆ„ν•œ 경우
        if (cnt <= 0)
            continue;

        // 뢀감독관
        num += (cnt / c);
        if (cnt % c != 0)
            num++;
    }

    // 좜λ ₯
    cout << num;
}

λŒ“κΈ€