백준 - 방 배정 (브론즈 2)

2024. 3. 2. 18:44코딩테스트 정리(자바)

728x90

이 문제를 틀렸다

틀린 원인은 K명보다 적을 경우를 생각하지 못하고

홀수명인지 짝수명인지만 생각하였기 때문이다

 

K로 나누었을 때 나누어 떨어지면 

-> K로 나누었을 때의 몫만 취하면 되고

나누어 떨어지지 않으면

-> 나눈 몫에 +1을 해주면 

간단히 해결되는 문제였다..

 

앞으로 문제 풀 때 이걸 놓치지 말자

-> K보다 작을 경우 어떻게 할 것인지

 

 

 

import java.io.*;

class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(
                new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(
                new OutputStreamWriter(System.out));
        String[] str=br.readLine().split(" ");
        int N=Integer.parseInt(str[0]);
        int K=Integer.parseInt(str[1]);
        int[] room=new int[12];

        for(int i=0;i<N;i++){
            String[] student=br.readLine().split(" ");
            int sex=Integer.parseInt(student[0]);
            int grade=Integer.parseInt(student[1]);
            int female=0;
            int male=1;

            if(sex==0){ //여자면
                room[female+(grade-1)*2]++; //학년별로 다른 방에
            }
            else{ //남자면
                room[male+(grade-1)*2]++;
            }
        }

        int sum=0;
        for(int i=0;i<room.length;i++){
            if(room[i]==0) //그 학년 성별이 없으면 넘어가기
                continue;

            if(room[i]%K==0)
                sum+=room[i]/K;
            else 
                sum+=room[i]/K +1;

        }

        bw.write(Integer.toString(sum));
        bw.flush();
        bw.close();
    }
}

 

나는 배열 한 개를 사용해 풀었지만

2차원 배열을 사용해도 되고

학년별로 배열을 여러 개 사용하든

성별별로 배열을 여러 개 사용해도 된다.

728x90