728x90
문제
https://www.acmicpc.net/problem/13300
풀이
쉽게 풀 수 있는 문제인 듯???
남/여 + 1~6학년 -> 12가지의 경우의 수로 나눈다고 생각하고
int[][] arr = new int[6][2];
이런 배열을 만들어서 해당되는 인덱스의 값을 증가시켜줬음.
증가시켜줄 때는 방 안의 학생 수를 K로 나눈 값이 0보다 크면 (그 값 + 1)만큼 증가시키고, 0이면 나눈 값만 증가시켰음.
K로 나눈 값이 0이고 %연산이 0이 아니면 +1, %연산도 0 이면 해당 성별, 학년의 학생이 없는 것이므로 그냥 넘어감
코드
// 13300번 방 배정
// https://www.acmicpc.net/problem/13300
package BAEKJOON;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Num13300_방배정 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken()); // 학생 수
int[][] arr = new int[6][2]; // 행: 1~6학년, 열: 남여
int K = Integer.parseInt(st.nextToken()); // 한 방 최대 인원 수
int count = 0; // 방 개수
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
int S = Integer.parseInt(st.nextToken()); // 성별
int Y = Integer.parseInt(st.nextToken()) - 1; // 학년
arr[Y][S]++;
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if (arr[i][j] / K > 0) {
if (arr[i][j] % K == 0) {
count += arr[i][j] / K;
} else {
count += (arr[i][j] / K) + 1;
}
} else {
if (arr[i][j] % K != 0) {
count++;
}
}
}
}
System.out.println(count);
}
}
728x90