-
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 해줌