문제링크
https://www.acmicpc.net/problem/13300
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
//import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
//https://www.acmicpc.net/problem/13300
//방배정
static int N,K;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
ArrayList<Integer> list[] = new ArrayList[6];
for(int i=0;i<6;i++)
list[i] = new ArrayList<>();
N = Integer.parseInt(st.nextToken()); //학생 수
K = Integer.parseInt(st.nextToken()); //최대 인원수
int room = 0;
for(int i=0;i<N;i++) {
//학생 성별과 학년이 공백으로 분리되어서 주어짐
//0은 여자 1은 남자
st = new StringTokenizer(br.readLine());
int gender = Integer.parseInt(st.nextToken());
int year = Integer.parseInt(st.nextToken());
list[year-1].add(gender);
}
/* for(int i=0;i<list.length;i++)
System.out.println(list[i].toString());*/
for(int i=0;i<list.length;i++) {
//현재 학년의 여자 수랑 남자 수 세아리기
int women=0,men=0;
for(int j=0;j<list[i].size();j++) {
if(list[i].get(j) ==0) women++;
else men++;
}
if(women<K && women>0) room++;
else {
if(women % K ==0) room +=(women/K);
else room +=(women/K)+1;
}
if(men<K && men>0) room++;
else {
if(men % K ==0) room +=(men/K);
else room +=(men/K)+1;
}
}
System.out.println(room);
}
}
ArrayList 사용하여 풀었당
ArrayList 에 6개 짜리 배열 선언해서 학년 만큼 선언해주었고 Integer로 여자인지 남자 인지 받아왔당
그리고 찾는 순서 코드이다.
일단 학년 배열에서 list[i]에서 list[i].size()만큼 돌면서 여자인지 남자인지 갯수를 세었다.
그리고 난 후 여자와 남자 방 개수를 필요한 만큼 세어주었다.
'알고리즘 > 백준' 카테고리의 다른 글
[JAVA]백준_14696_딱지놀이 (0) | 2021.02.23 |
---|---|
[JAVA]백준_10163_색종이 (0) | 2021.02.23 |
[JAVA]백준_2605_줄세우기 (0) | 2021.02.23 |
[JAVA]백준_4963_섬의 개수 (0) | 2021.02.19 |
[JAVA]백준_1592_영식이와 친구들 (0) | 2021.02.19 |