https://www.acmicpc.net/problem/20055
#include <iostream>
#include <vector>
using namespace std;
int n, k;
vector<pair<int, int>> robot;
int CheckZero() {
int answer = 0;
for (int i = 0; i < robot.size(); i++) {
if (robot[i].first == 0)
answer++;
}
return answer;
}
void RotateBelt() {
pair<int,int> temp = robot[robot.size() - 1];
for (int i = robot.size() - 2; i >= 0; i--) robot[i + 1].first = robot[i].first;
for (int i = n - 2; i >= 0; i--) robot[i + 1].second = robot[i].second;
robot[0].first = temp.first;
robot[0].second = 0;
}
void MoveRb() {
for (int i = n-1; i >=0 ; i--) {
if (robot[i].second == 1) {
if (i == n - 1) {
robot[i].second = 0;
}
else {
if (robot[i + 1].first > 0 && robot[i + 1].second == 0) {
robot[i + 1].second = 1;
robot[i].second = 0;
robot[i + 1].first -= 1;
}
}
}
}
}
void UpRb() {
if (robot[0].first > 0 && robot[0].second == 0) {
robot[0].second += 1;
robot[0].first -= 1;
}
}
int main(void) {
int temp, answer = 0;
cin >> n >> k;
for (int i = 0; i < 2 * n; i++) {
cin >> temp;
robot.push_back(make_pair(temp, 0));
}
while (CheckZero() < k) {
RotateBelt();
MoveRb();
UpRb();
answer++;
}
cout << answer;
return 0;
}
'백준 알고리즘 > 구현' 카테고리의 다른 글
모노미노도미노 2 (0) | 2021.03.08 |
---|---|
어른 상어 C++ (0) | 2021.03.04 |
마법사 상어와 토네이도 (0) | 2021.02.22 |
마법사 상어와 파이어볼 C++ (0) | 2021.02.18 |
백준 2960번 C++ (0) | 2019.02.18 |