백준 - 방 배정 (브론즈 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
'코딩테스트 정리(자바)' 카테고리의 다른 글
| List<String> list를 String으로 변환 (0) | 2024.03.04 |
|---|---|
| 백준 - 에디터 (실버 2) (0) | 2024.03.04 |
| 백준 - 두수의 합 (실버 3) (5) | 2024.03.01 |
| 백준 - 숫자 (브론즈 2) (2) | 2024.02.28 |
| 백준 - 일곱 난쟁이 (브론즈 1) (0) | 2024.02.28 |