곽로그
[백준 13300, Java] 방 배정 본문
반응형
문제
풀이
2차원 배열을 활용하면 쉽게 풀 수 있다. 문제 예시에 나와 있는 것 처럼 studentArray[n][m] ( 학년이 n학년이고 성별이 m인 학생의 수)인 2차원 배열을 선언한 뒤 배열을 순회하면서 각 학생수를 K로 나눈 몫과 나머지를 구한다. n학년이고 성별이 m인 학생들이 필요한 방의 갯수는, n학년이고 성별이 m인 총 학생수를 K로 나눈 몫을 구한다. 이때 나머지가 0보다 크면 1개의 방이 더 필요하다.
코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Mainb {
public static int N;
public static int K;
public static int[][] studentsArray;
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
st = new StringTokenizer(br.readLine()," ");
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
studentsArray = new int[7][2]; // studentArray[n][m] : n학년 이고 성별이 m인 학생의 수
for(int count=0; count<N; count++ ){
st = new StringTokenizer(br.readLine()," ");
int gender = Integer.parseInt(st.nextToken());
int year = Integer.parseInt(st.nextToken());
++studentsArray[year][gender];
}
int result = getRoomcount();
bw.write(String.valueOf(result));
bw.flush();
br.close();
bw.close();
/*
방배정
목표 : 한 방에 배정할 수 있는 최대 인원 수 K 가 주어졌을 때, 조건에 맞게 모든 학생을 배정하기 위해
필요한 방의 최소 개수
조건: 성별 같게/ 같은학년끼리
*/
}
public static int getRoomcount(){
int roomCount = 0;
for(int year = 1; year<=6; year++){
for(int gender = 0; gender<=1; gender++){
int numberOfStudent = studentsArray[year][gender];
roomCount += numberOfStudent/K;
roomCount += (numberOfStudent%K==0)? 0 : 1;
}
}
return roomCount;
}
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 16236, Java] 아기상어 (0) | 2020.12.28 |
---|---|
[백준 7576,Java] 토마토 (0) | 2020.12.28 |
[백준 1919, Java] 애너그램 만들기 (0) | 2020.12.23 |
[백준 2748, Java] 피보나치 수2 (0) | 2020.12.22 |
[백준 2667, Java] 단지번호 붙이기 (0) | 2020.12.22 |
Comments