https://www.acmicpc.net/problem/13300
*의사코드
1. visiited에 [학년][성별]이 몇명인지 기록.
for visitied : 학년별 성별인 사람숫자에서 각각 몇묶음인지 카운팅하면된다.
ex) 6학년 남학생 : 7명 / k=3
3묶음(3+3+1) == 필요한 방의 갯수
* 몇 묶음인지 구현하는법 (뺄셈을 이용하면 된다.)
int people = visited[i][j];
while (people / k != 0) {
people = people - k;
ret1++;
}
if (people % k != 0){
ret1++;;
}
//7명, k=3
//4명
//1명
* 몇 묶음인지 구현하는법2
출처 : 바킹독 github (basic-algo-lecture-master/workbook/0x03.md)
1. 몫만큼 카운팅
2.나머지가 존재할경우 카운팅+1
이방법이 훨씬 깔끔하다.....
// 필요한 방의 개수 계산
for (int i=0; i<2; ++i) {
for (int j=1; j<7; ++j) {
// 배정에 필요한 만큼 방의 개수 추가
ans += s[i][j] / K;
// 학생이 남을 경우, 하나의 방이 더 필요하므로 방의 개수 추가
if (s[i][j] % K) ++ans;
}
}
#include<bits/stdc++.h>
using namespace std;
int n,k,visited[7][2],ret1,ret2,ret3,ret4;
// [학년1-6][성별 / 여:0 / 남:1]
int main() {
cin >> n>>k;
for (int i = 0; i < n; ++i) {
int a, b = 0;
cin >> a >> b; //성별,학년
visited[b][a]++;
}
for (int i = 1; i <= 6; ++i) {
for (int j = 0; j <= 1; j++) {
int people = visited[i][j];
while (people / k != 0) {
people = people - k;
ret1++;
}
if (people % k != 0){
ret1++;;
}
//7명, k=3
//4명
//1명
}
}
cout << ret1;
}
'Algorithm > 배열' 카테고리의 다른 글
백준 1919 cpp // 문자열 차이검사는 +1, -1로 비교하라 (0) | 2023.08.16 |
---|---|
백준 11328 cpp // tc문제는 visit을 초기화하라 , 카운팅 배열 동등비교시 +1 -1하고 값이 0이면 같은배열 (0) | 2023.08.16 |
백준 10807 개수 세기 // visited 배열이용한 풀이방법 (0) | 2023.08.16 |
백준 3273 cpp // 두수의 차 visited 배열활용 (0) | 2023.08.14 |
백준 1475 cpp // visit 배열활용 (0) | 2023.08.13 |