https://www.acmicpc.net/problem/20055
#include <iostream>
using namespace std;
const int MAX = 201;
int n, k;
pair<int, int> belt[MAX]; // 내구도 값, 물건 유무(0:없음 1:있음)
int CheckValue() {
int value = 0;
for (int i = 1; i <= 2 * n; i++) {
if (belt[i].first == 0)
value += 1;
}
return value;
}
void MoveBelt() {
pair<int, int> temp[MAX];
for (int i = 1; i <= 2 * n; i++) {
temp[i] = belt[i];
}
//땅으로 내려가면 로봇 없어짐
belt[1] = temp[2 * n];
belt[1].second = 0;
for (int i = 1; i <= 2 * n - 1; i++) {
belt[i + 1] = temp[i];
if (i > n - 1) belt[i + 1].second = 0;
}
}
void MoveRobot() {
for (int i = n; i >= 1; i--) {
if (i == n) belt[i].second = 0;
else {
if (belt[i].second == 1) {
if (belt[i + 1].second == 0 && belt[i + 1].first > 0) {
belt[i].second = 0;
belt[i + 1].second = 1;
belt[i + 1].first -= 1;
}
}
}
}
if (belt[1].first > 0 && belt[1].second == 0) {
belt[1].first -= 1;
belt[1].second = 1;
}
}
int main(void) {
int answer = 0;
cin >> n >> k;
for (int i = 1; i <= 2 * n; i++) {
int value;
cin >> value;
belt[i] = make_pair(value, 0);
}
while (CheckValue() < k) {
MoveBelt();
MoveRobot();
answer += 1;
}
cout << answer << endl;
}
'백준 알고리즘 > 구현' 카테고리의 다른 글
주사위 윷놀이 C++ (0) | 2021.04.20 |
---|---|
모노미노도미노2 C++ (0) | 2021.04.18 |
청소년 상어 C++ (0) | 2021.04.17 |
마법사 상어와 파이어볼 C++ (0) | 2021.04.13 |
낚시왕 C++ (0) | 2021.04.11 |