[백준] 20055번 컨베이어 벨트 위의 로봇 (java, 구현)
728x90
반응형
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
static int n,k;
static int[] belt;
static ArrayList<Integer> list=new ArrayList<>();
static boolean[] pos;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
n=sc.nextInt();// 길이 컨베이어 길이는 2n
k=sc.nextInt();
belt=new int[2*n];
pos=new boolean[2*n];
for (int i = 0; i < 2*n; i++) {
belt[i]=sc.nextInt();
}
for (int i = 0; i < 2*n; i++) {
list.add(i);
}
int time=1;
int cnt=0;
while(true) {
// 1번 한 칸 회전
int cur=list.get(list.size()-1);
list.remove(list.size()-1);
list.add(0, cur);
int up=list.get(0); //타는 곳
int down=list.get(n-1); //내리는 곳
//내릴 로봇은 내리기
if(pos[down]) {//회전 시켰을 때 내릴 위치에 온 로봇 내림
pos[down]=false;
}
//로봇 스스로 이동
for (int i = n-1; i >=0; i--) {
int idx=list.get(i);
int next=list.get(i+1);
if(pos[idx]==true && belt[next]>=1 && pos[next]==false) {
belt[next]-=1;
pos[next]=true;
pos[idx]=false;
if(belt[next]==0)cnt++;
}
}
//내릴 로봇은 내리기
if(pos[down]) {
pos[down]=false;
}
//로봇 올리기
if(belt[up]>=1 && pos[up]==false) {
pos[up]=true;
belt[up]-=1;
if(belt[up]==0)cnt++;
}
if(cnt>=k)break;
time++;
}
System.out.println(time);
}
}
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 20058번 마법사 상어와 파이어 스톰 (java, 시뮬레이션) (0) | 2021.04.16 |
---|---|
[백준] 16234번 인구 이동 (bfs, 시뮬레이션, java) (0) | 2021.04.15 |
[백준] 20056번 마법사 상어와 파이어볼 (java, 구현, bfs) (0) | 2021.04.15 |
[백준] 7569번 토마토 (java, 3차원 bfs) (0) | 2021.04.14 |
[백준] 17144번 미세먼지 안녕! (java, 구현) (0) | 2021.04.14 |
TAGS.