cgy12306

[백준 BoJ] 20055 - 컨베이버 벨트 위의 로봇 본문

Algorithm/C++

[백준 BoJ] 20055 - 컨베이버 벨트 위의 로봇

cgy12306 2021. 10. 21. 18:08
// https://www.acmicpc.net/problem/20055
// 컨베이어 벨트 위의 로봇

#include<iostream>
#include<vector>
using namespace std;
int N, K, belt[201];
bool robot[201];


void curl() {
	int tmp1, tmp2;
	
	tmp1 = belt[2 * N];
	tmp2 = robot[2 * N];
	for (int i = N * 2 ; i > 1; i--) {
		belt[i] = belt[i - 1];
		robot[i] = robot[i - 1];
	}

	belt[1] = tmp1;
	robot[1] = tmp2;
	
	robot[N] = false;
}

void move() {
	
	for (int i = N - 1; i > 0 ; i--) {
		if (!robot[i + 1] && robot[i] && belt[i+1] > 0) {
			robot[i + 1] = true;
			robot[i] = false;
			belt[i + 1]--;
		}
	}

	robot[N] = false;
}
void load() {
	if (belt[1] > 0 && !robot[1]) {
		robot[1] = true;
		belt[1]--;
	}
	return;
}

int check() {
	int durability = 0;
	for (int i = 1; i <= N * 2; i++) {
		if (belt[i] == 0) {
			durability++;
		}
	}
	return durability;
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	cin >> N >> K;

	for (int i = 1; i <= N * 2; i++) {
		cin >> belt[i];
	}
	int cnt = 1;
	while (1) {
		curl();
		move();
		load();
		if (check() >= K) break;
		cnt++;
	}
	cout << cnt;
}
  • simulation

'Algorithm > C++' 카테고리의 다른 글

[백준 BoJ] 13458 - 시험 감독  (0) 2021.10.22
[백준 BoJ] 14503 - 로봇 청소기  (0) 2021.10.22
[백준 BoJ] 2947 - 나무 조각  (0) 2021.10.15
[백준 BoJ] 17070 - 파이프 옮기기1  (0) 2021.10.15
[프로그래머스] 기능개발  (0) 2021.09.10
Comments