민스씨의 일취일장

Java | 백준 13300 방배정 풀이 전략 기록 본문

Data Structure & Algorithm/Java

Java | 백준 13300 방배정 풀이 전략 기록

읻민스 2023. 8. 9. 12:23
반응형

백준 13300 방배정 풀이 전략 기록 [🥉 브론즈 II ]

 

13300번: 방 배정

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

www.acmicpc.net

문제 해결 포인트

  1. 같은 성별과 학년만이 같은 방에 배정될 수 있다.
  2. 한 방에 배정될 수 있는 학생 수는 정해져있다.

사용한 전략

  1. 남, 여 학년별 몇명의 학생이 있는지 2개의 배열을 이용해 수를 기록한 다음
  2. 학생의 수를 최대 인원수로 나눠주고 나머지가 0이 아닌 경우 방을 한 개씩 더 배정한다.

코드

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

public class 방배정13300 {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StringTokenizer st;
    static int N, k, roomNum;
    static int[] cntF=new int[6], cntM=new int[6];

    static void input() throws IOException{
        st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
        k = Integer.parseInt(st.nextToken());
    }

    static void execute() throws IOException{
        for(int i=0; i<N; i++){
            st = new StringTokenizer(br.readLine());
            if(st.nextToken().equals("0")){
                cntF[Integer.parseInt(st.nextToken())-1]++;
            } else {
                cntM[Integer.parseInt(st.nextToken())-1]++;
            }
        }
        for(int i=0; i<6; i++){
            roomNum += cntF[i]%k ==0 ? cntF[i]/k : cntF[i]/k+1;
            roomNum += cntM[i]%k ==0 ? cntM[i]/k : cntM[i]/k+1;
        }
        System.out.println(roomNum);
    }

    public static void main(String[] args) throws IOException {
        input();
        execute();
    }
}

https://github.com/YdMinS/Java/

 

GitHub - YdMinS/Java: Java 학습 내용

Java 학습 내용. Contribute to YdMinS/Java development by creating an account on GitHub.

github.com

 

728x90
반응형