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

[λ°±μ€€] 13300번: λ°© λ°°μ •(κ΅¬ν˜„)

by 주발2 2020. 3. 4.
λ°˜μ‘ν˜•

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

 

13300번: λ°© λ°°μ •

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

www.acmicpc.net

μ½”λ“œ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(bf.readLine());
		int N = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());
		int room = 0;
		// 1 ~ 6ν•™λ…„ , 남 & μ—¬ ꡬ뢄
		int[][] student = new int[7][2];
		
		// 각 학년별 남학생, 여학생 κ΅¬λΆ„ν•΄μ„œ 카운트
		for(int i=0; i<N; i++) {
			st = new StringTokenizer(bf.readLine());
			int a = Integer.parseInt(st.nextToken());	// 성별
			int b = Integer.parseInt(st.nextToken());	// ν•™λ…„
			if(a == 0) student[b][0] ++;	// μ—¬μ„± => [ν•™λ…„][0] ++
			else 	student[b][1] ++;       // 남성 => [ν•™λ…„][1] ++
		}
		
		for(int i=1; i<student.length; i++) {
			for(int j=0; j<student[i].length; j++) {
				if(student[i][j] == 0)	continue;	// iν•™λ…„ 학생이 μ—†λŠ” 경우 => λ°© ν•„μš”μ—†μ΄ 톡과
				room += student[i][j] / K;	// ν•„μš”ν•œ λ°© 계산
				if(student[i][j] % K != 0)	// 방이 학생에 λ‚˜λˆ„μ–΄ 떨어지지 μ•ŠμœΌλ©΄ λ°© ν•˜λ‚˜ 더 ν•„μš”
					room += 1;
			}
		}
		System.out.println(room);
		bf.close();
	}

}

풀이

KOI 2016 μ΄ˆλ“±λΆ€ κ΅¬ν˜„ 문제,

λ¬Έμ œμ—μ„œ 주어진 λŒ€λ‘œ 각 학년별 여학생 & 남학생이 λͺ‡λͺ…인지 κ΅¬ν•΄μ„œ μ €μž₯ν–ˆλ‹€.

λ¬Έμ œμ—μ„œ μ£Όμ–΄μ§„λŒ€λ‘œ μž…λ ₯ν•˜κ³  각 학년별 여학생 & 남학생을 좜λ ₯ν•˜λ©΄ μ•„λž˜μ™€ 같이 λ‚˜μ˜¨λ‹€.

여학생 / 남학생 λ°˜μ„ λ”°λ‘œ λ°°μ •ν•˜κ³ , 학년에 학생이 μ—†λŠ”κ²½μš° 방이 ν•„μš”μ—†λ‹€κ³  ν–ˆμœΌλ―€λ‘œ,

λ§Œμ•½ 학생이 μ—†μœΌλ©΄ continueλ₯Ό 톡해 for문을 κ±΄λ„ˆ λˆλ‹€.

κ·Έ ν›„ ν•„μš”ν•œ 방의 κ°―μˆ˜λŠ” ν•™μƒμˆ˜ / Kλ₯Ό ν•˜λŠ”λ°,

μ΄λ•Œ ν•™μƒμˆ˜ / K κ°€ λ‚˜λˆ„μ–΄ 떨어지지 μ•ŠμœΌλ©΄ +1을 ν•΄μ€€λ‹€.

ν•™μƒμˆ˜ : 3λͺ… , K = 2 일경우, λͺ«μ€ 1이고, λ‚˜λˆ„μ–΄ 떨어지지 μ•ŠκΈ°λ•Œλ¬Έμ— 방은 2κ°œκ°€ ν•„μš”ν•˜λ‹€.

 

 

λ°˜μ‘ν˜•

λŒ“κΈ€