목차
문제 정보
https://www.acmicpc.net/problem/20055
난이도 : G5
유형 : 구현, 시뮬레이션
문제 풀이
개인적으로 문제의 내용 설명이 불친절하다고 느꼈다. 문제에 주어진 1 ~ 4 수행과정을 1 세트로 묶어서 카운팅 하여야 한다.
문제 말대로하면 1 ~ 4 과정을 모두 세서 카운팅하여야 하는데, 그러면 오답이 나올 것이다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private int N, K;
private int[] belt;
private boolean[] robot;
private int res;
public void solution() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
belt = new int[N * 2];
robot = new boolean[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N * 2; i++) {
belt[i] = Integer.parseInt(st.nextToken());
}
res = 0;
while (K > 0) {
int temp = belt[N * 2 - 1];
for (int i = N * 2 - 1; i > 0; i--) {
belt[i] = belt[i - 1];
}
belt[0] = temp;
for (int i = N - 1; i > 0; i--) {
robot[i] = robot[i - 1];
}
robot[N - 1] = false;
robot[0] = false;
for (int i = N - 1; i > 0; i--) {
if (!robot[i] && robot[i - 1] && belt[i] > 0) {
belt[i]--;
if (belt[i] == 0) {
K--;
}
robot[i] = true;
robot[i - 1] = false;
}
}
if (belt[0] > 0) {
belt[0]--;
if (belt[0] == 0) {
K--;
}
robot[0] = true;
}
res++;
}
System.out.println(res);
}
public static void main(String[] args) throws IOException {
new Main().solution();
}
}
'Algorithm, Problem Solving > 백준(boj)' 카테고리의 다른 글
[백준][Java] 2668 - 숫자고르기 (0) | 2023.03.27 |
---|---|
[백준][Java] 2023 - 신기한 소수 (0) | 2023.03.26 |
[백준][Java] 9084 - 동전 (0) | 2023.03.25 |
[백준][Java] 9205 - 맥주 마시면서 걸어가기 (0) | 2023.03.25 |
[백준][Java] 11292 - 키 큰 사람 (0) | 2023.03.24 |
댓글