1. 문제

www.acmicpc.net/problem/13300

 

13300번: 방 배정

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 수학여행에 참가하는 학생 수를 나타내는 정수 N(1 ≤ N ≤ 1,000)과 한 방에 배정할 수 있는 최대 인원 수 K(1 < K ≤ 1,000)가 공백으로 분리되어

www.acmicpc.net

2. 접근방법

학년과 성별이 주어지니

2차원 배열로 [2][6] 성별 * 학년 갯수 만큼 만들어주고

 

각 해당하는 성별 학생의 수만큼 배열에 넣어준다.

 

성별 학년에 따라 방을 나눠야하므로

 

각 배열 위치의 값 들에 대해 한 방에 들어갈 수 있는 수 K로 나누어서 result에 더해주면 된다.

 

3. 자바 코드

package Silver;

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

public class P13300방배정 {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());
		int stu[][] = new int[2][7];
		for (int i = 0; i < N; i++) {
			st = new StringTokenizer(br.readLine());
			stu[Integer.parseInt(st.nextToken())][Integer.parseInt(st.nextToken())]++;
		}
		int room = 0;
		for (int i = 1; i <= 6; i++) {
			if (stu[0][i] != 0)
				room += stu[0][i] % K != 0 ? stu[0][i] / K + 1 : stu[0][i] / K;

			if (stu[1][i] != 0) {
				room += stu[1][i] % K != 0 ? stu[1][i] / K + 1 : stu[1][i] / K;
			}

		}
		System.out.println(room);
	}
}

 

+ Recent posts