구현 !
일단 문제가 뭔 소리인지 도대체가 이해가 안 돼서 문제 해설을 봤다.
처음에 문제 해석을 어느정도 하긴 했는데 이상하게 해석하기도 했다.
문제를 완전히 이해한 후에는 30분 안에 푼 것 같다.
다른 사람들도 문제를 이해 못한 사람들도 꽤 있는 걸 보면
음....
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb=new StringBuilder();
StringTokenizer st;
st=new StringTokenizer(br.readLine());
int N=Integer.parseInt(st.nextToken());
int K=Integer.parseInt(st.nextToken());
Container container[]=new Container[N*2+1];
st=new StringTokenizer(br.readLine());
for(int i=1;i<=2*N;i++) {
int num=Integer.parseInt(st.nextToken());
container[i]=new Container(num,false);
}
int count=0;
while(K>0) {
Container copy[]=container.clone();
int idx=2;
for(int i=1;i<container.length;i++) {
if(idx>=container.length) idx=1;
container[idx++]=copy[i];
}
container[N].robot=false; //N 번째의 로봇은 없어진다.
for(int i=N;i>1;i--) {
//현재칸에 라이프가 1 이상이고 로봇이 없고,
//내 이전 칸에 로봇이 있다면
if(container[i].life>=1&&!container[i].robot&&container[i-1].robot) {
if(i!=N) //현재 칸이 N번쨰 칸이면 내리는 위치이므로 제외
container[i].robot=true;
container[i].life--;
container[i-1].robot=false; //전의 칸 로봇 없애줌
if(container[i].life==0) K--; //라이프가 0되면 K 하나 줄음
}
}
//첫 번째 컨테이너 위치의 라이프가 1 이상이면 라이프 1 줄이고 로봇을 올림
if(container[1].life>=1) {
container[1].life--;
container[1].robot=true;
if(container[1].life==0) K--;
}
count++;
}
System.out.println(count);
}
}
class Container {
int life;
boolean robot;
Container (int life,boolean robot){
this.life=life;
this.robot=robot;
}
}
프로그래밍 실력보다 문제 해석 실력을 늘려야하는 걸까
문제가 이해가 안 된다 ㅠ_ㅠ
하루에 백준 1문제 이상 푸는 것을 목표로 하고있다.
https://solved.ac/profile/anwlro0212