[백준] 13300 방 배정 자바

차누·2023년 8월 22일
0

문제

성별과 학년별 방을 배정하는 문제이다. 난이도는 브론즈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);
		
	}
	}
profile
to be good programmer

0개의 댓글