성별과 학년별 방을 배정하는 문제이다. 난이도는 브론즈2 구현문제
표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 수학여행에 참가하는 학생 수를 나타내는 정수 N(1 ≤ N ≤ 1,000)과 한 방에 배정할 수 있는 최대 인원 수 K(1 < K ≤ 1,000)가 공백으로 분리되어 주어진다. 다음 N 개의 각 줄에는 학생의 성별 S와 학년 Y(1 ≤ Y ≤ 6)가 공백으로 분리되어 주어진다. 성별 S는 0, 1중 하나로서 여학생인 경우에 0, 남학생인 경우에 1로 나타낸다.
표준 출력으로 학생들을 모두 배정하기 위해 필요한 최소한의 방의 수를 출력한다.
1. 성별과 학년 별 크기만큼 정수형 배열을 만든다
2. StringTokenizer로 입력받아 배열에 저장
3. 수용인원만큼 나눠 방을 배정하고 카운터를 증가
4. 만약 수용인원 만큼 인원이 많으면 방을 하나 더 배정하고 카운터를 증가
5. 결과값 출력
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class backjoon{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int max_num = Integer.parseInt(st.nextToken());
int max_room = Integer.parseInt(st.nextToken());
//
int [][] arr_int = new int[2][7];
//성별/ 학년 입력
StringTokenizer st1;
for(int i = 0; i < max_num; i++) {
st = new StringTokenizer(br.readLine());
int num = Integer.parseInt(st.nextToken());
int grade = Integer.parseInt(st.nextToken());
arr_int[num][grade]++;
}
int count = 0;
for(int i = 0; i < 2; i++) {
for(int j = 1; j < 7; j++) {
count += arr_int[i][j] / max_room;
//방에 학생의 수가 수용인원보다 초과되면 카운터 하나 증가
if(arr_int[i][j] % max_room != 0) {
count++;
}
}
}
System.out.print(count);
}
}