boj)13330

2020. 8. 23. 14:54PS/boj


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

public class Main {

    public static void main(String[] args) throws Exception {

        /**
         * #13300) 방 배정
         * 1. 같은 성별끼리
         * 2. 같은 학년끼리
         * 3. 한 방에 한 명도 가능
         * 4. 한 방의 최대 인원수 K
         * == 조건에 맞게 모든 학생을 배정하기 위한 방의 최소 개수 ==
         */

        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[][] arr = new int[7][2]; // 학생 수를 담는 배열 Y , S
        int maxRoom = 0; // 답

        // 성별 S : 여 0, 남 1 / 학년 Y (1~6)
        for (int i = 0; i < N; i++) {
            StringTokenizer st2 = new StringTokenizer(br.readLine());
            int S = Integer.parseInt(st2.nextToken());
            int Y = Integer.parseInt(st2.nextToken());
            arr[Y][S]++;
        }

        for (int i = 1; i <= 6; i++) { // 학년 마다 필요한 방 수 체크
            maxRoom += arr[i][0]/K; // 여자 방 몫
            maxRoom += arr[i][1]/K; // 남자 방 몫

            // 나머지 + 1
            if (arr[i][0]%K > 0) {
                maxRoom++;
            }
            if (arr[i][1]%K > 0) {
                maxRoom++;
            }
        }

        // 답 출력
        System.out.println(maxRoom);

    }
}

 

- 혼자 풀기 성공

- 방금 본 BufferedReader 써봤음

- 공책에 적어서 하니까 좀 더 잘 풀리는 느낌 

- 2중 배열을 써서 학년,성별 구분해서 입력받을때 ++로 학년,성별에 맞는 칸에 추가시킴

- K를 나눈 몫만큼 방 더하고 추가적으로 나머지가 존재한다면 +1 해줌

 

 

 

https://www.acmicpc.net/problem/13300

'PS > boj' 카테고리의 다른 글

boj)1475  (0) 2020.08.23
boj)1919  (0) 2020.08.23
boj)11328  (0) 2020.08.23
boj)2577  (0) 2020.08.23
boj)10808  (0) 2020.08.22