πŸ• Baaaaaarking/0x03κ°• - λ°°μ—΄

[BOJ][C++] λ°±μ€€ 13300번: λ°© λ°°μ •

선달 2023. 4. 27. 23:28
λ°˜μ‘ν˜•

https://www.acmicpc.net/problem/13300

 

13300번: λ°© λ°°μ •

ν‘œμ€€ μž…λ ₯으둜 λ‹€μŒ 정보가 주어진닀. 첫 번째 μ€„μ—λŠ” μˆ˜ν•™μ—¬ν–‰μ— μ°Έκ°€ν•˜λŠ” 학생 수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ N(1 ≤ N ≤ 1,000)κ³Ό ν•œ 방에 λ°°μ •ν•  수 μžˆλŠ” μ΅œλŒ€ 인원 수 K(1 < K ≤ 1,000)κ°€ 곡백으둜 λΆ„λ¦¬λ˜μ–΄

www.acmicpc.net

 

문제

정보 μ΄ˆλ“±ν•™κ΅μ—μ„œλŠ” λ‹¨μ²΄λ‘œ 2λ°• 3일 μˆ˜ν•™μ—¬ν–‰μ„ κ°€κΈ°λ‘œ ν–ˆλ‹€. μ—¬λŸ¬ 학년이 같은 μž₯μ†Œλ‘œ μˆ˜ν•™μ—¬ν–‰μ„ κ°€λ €κ³  ν•˜λŠ”λ° 1ν•™λ…„λΆ€ν„° 6ν•™λ…„κΉŒμ§€ 학생듀이 묡을 방을 λ°°μ •ν•΄μ•Ό ν•œλ‹€. 남학생은 남학생끼리, 여학생은 여학생끼리 방을 λ°°μ •ν•΄μ•Ό ν•œλ‹€. λ˜ν•œ ν•œ λ°©μ—λŠ” 같은 ν•™λ…„μ˜ 학생듀을 λ°°μ •ν•΄μ•Ό ν•œλ‹€. λ¬Όλ‘  ν•œ 방에 ν•œ λͺ…λ§Œ λ°°μ •ν•˜λŠ” 것도 κ°€λŠ₯ν•˜λ‹€.

ν•œ 방에 λ°°μ •ν•  수 μžˆλŠ” μ΅œλŒ€ 인원 수 Kκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, 쑰건에 맞게 λͺ¨λ“  학생을 λ°°μ •ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ 방의 μ΅œμ†Œ 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

예λ₯Ό λ“€μ–΄, μˆ˜ν•™μ—¬ν–‰μ„ κ°€λŠ” 학생이 λ‹€μŒκ³Ό κ°™κ³  K = 2일 λ•Œ 12개의 방이 ν•„μš”ν•˜λ‹€. μ™œλƒν•˜λ©΄ 3ν•™λ…„ 남학생을 λ°°μ •ν•˜κΈ° μœ„ν•΄ λ°© 두 κ°œκ°€ ν•„μš”ν•˜κ³  4ν•™λ…„ μ—¬ν•™μƒμ—λŠ” 방을 λ°°μ •ν•˜μ§€ μ•Šμ•„λ„ 되기 λ•Œλ¬Έμ΄λ‹€.

학년여학생남학생
1ν•™λ…„ 영희 λ™ν˜Έ, 동진
2ν•™λ…„ ν˜œμ§„, 상희 경수
3ν•™λ…„ 경희 λ™μˆ˜, 상철, 칠볡
4ν•™λ…„   λ‹¬ν˜Έ
5ν•™λ…„ μ •μˆ™ ν˜Έλ™, 건우
6ν•™λ…„ μˆ˜μ§€ 동건

μž…λ ₯

ν‘œμ€€ μž…λ ₯으둜 λ‹€μŒ 정보가 주어진닀. 첫 번째 μ€„μ—λŠ” μˆ˜ν•™μ—¬ν–‰μ— μ°Έκ°€ν•˜λŠ” 학생 수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ •μˆ˜ N(1 ≤ N ≤ 1,000)κ³Ό ν•œ 방에 λ°°μ •ν•  수 μžˆλŠ” μ΅œλŒ€ 인원 수 K(1 < K ≤ 1,000)κ°€ 곡백으둜 λΆ„λ¦¬λ˜μ–΄ 주어진닀. λ‹€μŒ N 개의 각 μ€„μ—λŠ” ν•™μƒμ˜ 성별 S와 ν•™λ…„ Y(1 ≤ Y ≤ 6)κ°€ 곡백으둜 λΆ„λ¦¬λ˜μ–΄ 주어진닀. 성별 SλŠ” 0, 1쀑 ν•˜λ‚˜λ‘œμ„œ 여학생인 κ²½μš°μ— 0, 남학생인 κ²½μš°μ— 1둜 λ‚˜νƒ€λ‚Έλ‹€. 

좜λ ₯

ν‘œμ€€ 좜λ ₯으둜 학생듀을 λͺ¨λ‘ λ°°μ •ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ μ΅œμ†Œν•œμ˜ 방의 수λ₯Ό 좜λ ₯ν•œλ‹€.

 

풀이

μ„œλΈŒν…ŒμŠ€ν¬λŠ” κ·Έλƒ₯ λ¬΄μ‹œκ°€λŠ₯ν•˜λ‹€

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<vector<int>>cnt(2, vector<int>(6, 0));

    int n,k;
    cin >> n >> k;
    int s,y;
    while(n--) {
        cin >> s >> y;
        cnt[s][y-1]++;
    }
    
    int tmp, ans=0;
    for(int i=0; i<2; i++) {
        for(int j=0; j<6; j++) {
            tmp = cnt[i][j];
            ans += tmp/k;
            if(tmp%k>0) ans++;
        }
    }
    
    cout << ans;
    
    return 0;
}
λ°˜μ‘ν˜•