문제 링크: https://www.acmicpc.net/problem/14720
딸기 - 초코 - 바나나 - 딸기 - 초코 - 바나나 - ... 이 순으로 우유를 먹었을 때 최대한 많이 먹을 수 있는 개수를 세는 문제입니다.
곰곰이 생각해봤는데 앞에서부터 입력을 받을 때 '먹을 수 있으면 먹는다'고 가정하면 최대값이 나올 것 같았습니다. 좀 생각해봤는데 먹을 수 있는데 안먹는 경우에 우유를 더 많이 먹게 되는 경우가 떠오르지 않더라고요.
이렇게 그리디로 풀면 되겠습니다
#include <bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
int n;
cin >> n;
int current = 2;
int cnt = 0;
for (int i = 0; i < n; ++i) {
int in; cin >> in;
if (current == 0 && in == 1) {
++cnt;
current = 1;
}
else if (current == 1 && in == 2) {
++cnt;
current = 2;
}
else if (current == 2 && in == 0) {
++cnt;
current = 0;
}
}
cout << cnt << '\n';
return 0;
}
반응형
'Online Judge > 백준' 카테고리의 다른 글
[백준][C++] 9296: Grading Exams (0) | 2020.08.26 |
---|---|
[백준][C++] 6965: Censor (0) | 2020.08.25 |
[백준][C++] 5014: 스타트링크 (0) | 2020.08.23 |
[백준][C++] 11505: 구간 곱 구하기 (0) | 2020.08.19 |
[백준][C++] 12837: 가계부 (Hard) (0) | 2020.08.18 |