Notice
Recent Posts
Recent Comments
Link
거의 알고리즘 일기장
codeforces_ 158B_ Taxi 본문
https://codeforces.com/problemset/problem/158/B
풀이방법
1. 4명, 3명, 2명인 그룹을 먼저 태운다
ans = numOfGroup[4] + numOfGroup[3] + numOfGroup[2]/2;
2. 1명인 그룹, 2명인 그룹을 위에 맞춰 끼워탄다. ( 1번은 3번에 2번은 2번끼리 )
numOfGroup[1] -= numOfGroup[3];
numOfGroup[2] -= (numOfGroup[2] / 2)*2;
3. 2명인 그룹, 1명인 그룹이 남았으면 그에 맞춰 계산한다.
if (numOfGroup[2] > 0)
{
ans += 1;
numOfGroup[1] -= 2;
}
if (numOfGroup[1] > 0)
{
ans += (numOfGroup[1] / 4);
if (numOfGroup[1] % 4 != 0)
ans += 1;
}
전체코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int numOfGroup[5];
int main()
{
int n;
cin >> n;
int value, ans = 0;
for (int i = 0; i < n; i++)
{
cin >> value;
numOfGroup[value]++;
}
ans = numOfGroup[4] + numOfGroup[3] + numOfGroup[2]/2;
numOfGroup[1] -= numOfGroup[3];
numOfGroup[2] -= (numOfGroup[2] / 2)*2;
if (numOfGroup[2] > 0)
{
ans += 1;
numOfGroup[1] -= 2;
}
if (numOfGroup[1] > 0)
{
ans += (numOfGroup[1] / 4);
if (numOfGroup[1] % 4 != 0)
ans += 1;
}
cout << ans;
return 0;
}
후기
아무리 쉬운 영어 지문이라도 조건 하나하나 꼼꼼하게 읽기가 쉽지않다.ㅠ
반응형
'알고리즘 문제풀이' 카테고리의 다른 글
백준 2293번 _ 동전 1 (0) | 2020.05.03 |
---|---|
백준 11657번 _ 타임머신 (0) | 2020.05.03 |
백준 15683번_ 감시 (0) | 2020.05.01 |
백준 14891번 _ 톱니바퀴 (0) | 2020.04.30 |
백준 14890번_경사로 (0) | 2020.04.30 |
Comments