728x90
반응형
https://www.acmicpc.net/problem/20055
#include <iostream>
#include <deque>
using namespace std;
int n, k;
deque<pair<int, bool>> dq;
int answer;
int main() {
cin >> n >> k;
for(int i = 0; i < 2 * n; i++){
int x;
cin >> x;
dq.push_back({x, false});
}
while(true){
answer++;
// 1
int t1 = dq.back().first;
bool t2 = dq.back().second;
dq.pop_back();
dq.push_front({t1, t2});
dq[n - 1].second = false;
// 2
for(int i = n - 2; i >= 0; i--){
if(dq[i].second){
if(!dq[i + 1].second && dq[i + 1].first > 0){
dq[i].second = false;
if(i != n - 2) dq[i + 1].second = true;
dq[i + 1].first--;
}
}
}
// 3
if(dq[0].first > 0) {
dq[0].second = true;
dq[0].first--;
}
// 4
int cnt = 0;
for(int i = 0; i < 2 * n; i++){
if(dq[i].first <= 0) cnt++;
}
if(cnt >= k) break;
}
cout << answer;
return 0;
}
주의할 점
1. 2번에서 로봇을 옮길 때 뒤에 있는 로봇부터 옮겨야 한다. 반복문을 거꾸로 돌린다.
2. 내리는 위치에 도착 후 로봇이 내리므로 내리는 위치에 도착하면 내구성이 감소한다.
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 7490번 0 만들기 (C++) (0) | 2023.10.30 |
---|---|
[BOJ] 19942번 다이어트 (C++) (1) | 2023.10.29 |
[BOJ] 1781번 컵라면 (C++) (0) | 2023.05.10 |
[BOJ] 15565번 귀여운 라이언 (C++) (0) | 2023.05.05 |
[BOJ] 1068번 트리 (C++) (0) | 2023.03.19 |