• toc {:toc}

문제

정보 μ΄ˆλ“±ν•™κ΅μ—μ„œλŠ” λ‹¨μ²΄λ‘œ 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둜 λ‚˜νƒ€λ‚Έλ‹€.

좜λ ₯

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

μ„œλΈŒνƒœμŠ€ν¬

λ²ˆν˜Έλ°°μ μ œν•œ
12

μž…λ ₯ μ˜ˆμ‹œλ‘œ μ£Όμ–΄μ§„ μž…λ ₯만 μ‘΄μž¬ν•œλ‹€.

210

1ν•™λ…„ λ‚¨ν•™μƒλ§Œ μ°Έκ°€ν•˜λŠ” κ²ƒμœΌλ‘œ κ°€μ •ν•œλ‹€.

320

1ν•™λ…„λ§Œ μ°Έκ°€ν•˜λŠ” κ²ƒμœΌλ‘œ κ°€μ •ν•œλ‹€.

468

μ›λž˜μ˜ μ œμ•½μ‘°κ±΄ 이외에 아무 μ œμ•½μ‘°κ±΄μ΄ μ—†λ‹€.

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

풀이

2차원 배열을 μ΄μš©ν•˜μ—¬ 성별과 학년을 κ΅¬λΆ„ν•˜μ—¬ μ €μž₯함.

이쀑 for문을 톡해도 μ‹œκ°„ μƒμœΌλ‘œ μΆ©λΆ„ν•˜λ‹€κ³  생각함.

이쀑 for문을 μ΄μš©ν•΄ λŒλ©΄μ„œ 성별, ν•™λ…„ 별 인원을 max(λ°© μ΅œλŒ€ 이용 인원)둜 λ‚˜λˆ΄μ„ λ•Œ λ‚˜λ¨Έμ§€κ°€ λ‚˜μ˜€λ©΄ 방을 1개 μΆ”κ°€ν•˜λŠ” μ‹μœΌλ‘œ μΉ΄μš΄νŠΈν•¨.

!!! 항상 λ°°μ—΄μ—μ„œ μ‚¬μš©λ˜λŠ” μΈλ±μŠ€μ— μ£Όμ˜ν•  것 !!!

#include <bits/stdc++.h>
using namespace std;
 
int arr[2][7];
 
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	int N, max, gender, year, res=0;
	cin >> N >> max;
	
	for(int i=0; i<N; ++i){
		cin >> gender >> year;
		arr[gender][year]++;
	}
	
	for(int i=0; i<2; ++i){
		for(int j=1; j<=6; ++j){
			if(arr[i][j]==0) continue;
			
			if(arr[i][j]%max!=0)
				res += arr[i][j]/max +1;
			else
				res += arr[i][j]/max;
		}
	}
/*
// ν•„μš”ν•œ 방의 개수 계산
  for (int i=0; i<2; ++i) {
    for (int j=1; j<7; ++j) {
      // 배정에 ν•„μš”ν•œ 만큼 방의 개수 μΆ”κ°€
      ans += s[i][j] / K;
      // 학생이 남을 경우, ν•˜λ‚˜μ˜ 방이 더 ν•„μš”ν•˜λ―€λ‘œ 방의 개수 μΆ”κ°€
      if (s[i][j] % K) ++ans;
    }
  }
// 곡톡적인 뢀뢄은 λ¨Όμ € μ²˜λ¦¬ν•˜κ³  μ˜ˆμ™Έ μ²˜λ¦¬ν•˜λŠ” 방식도 있음.
*/
	cout << res << '\n';
	
	
	return 0;
}