https://www.acmicpc.net/problem/20055
[난이도] Gold5
[유형] 시뮬레이션
[풀이]
2N 크기의 벨트 배열과, N 크기의 로봇 배열을 선언하여,
매 단계마다 조건에 맞게 업데이트 해주면 되는 문제입니다.
구현이 까다롭기 보다는 문제의 지문을 정확히 해석하는 능력이 더 중요한 문제입니다.
#include <cstdio>
using namespace std;
int N,K,robot[101],belt[201];
int main(){
scanf("%d%d",&N,&K);
for(int i=1;i<=2*N;i++) scanf("%d",&belt[i]);
int ret=1;
while(1){
for(int i=N;i>=2;i--) robot[i]=robot[i-1];
robot[1]=robot[N]=0;
int t = belt[2*N];
for(int i=2*N;i>=2;i--) belt[i]=belt[i-1];
belt[1]=t;
for(int i=N-1;i>=2;i--) {
if(robot[i] && !robot[i+1] && belt[i+1]>=1) {
belt[i+1]--;
robot[i]=0;
if(i+1!=N) robot[i+1]=1;
}
}
if(belt[1]>0) {
robot[1]=1;
belt[1]--;
}
int cnt=0;
for(int i=1;i<=2*N;i++) if(belt[i]==0) cnt++;
if(cnt>=K) break;
ret++;
}
printf("%d",ret);
}
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Gold5/20055.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Gold4] 13975 : 파일 합치기 3 (C++) (0) | 2022.02.12 |
---|---|
[BOJ/백준][Gold4] 14466 : 소가 길을 건너간 이유 6 (C++) (0) | 2022.02.12 |
[BOJ/백준][Gold5] 2800 : 괄호 제거 (C++) (0) | 2022.02.12 |
[BOJ/백준][Gold5] 14940 : 쉬운 최단거리 (C++) (0) | 2022.02.12 |
[BOJ/백준][Gold5] 17425 : 약수의 합 (C++) (0) | 2022.02.12 |