boj)13330
2020. 8. 23. 14:54ㆍPS/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 해줌