https://www.acmicpc.net/problem/20055
๋ฌธ์
๊ฐ N์ธ ์ปจ๋ฒ ์ด์ด ๋ฒจํธ๊ฐ ์๊ณ , ๊ธธ์ด๊ฐ 2N์ธ ๋ฒจํธ๊ฐ ์ด ์ปจ๋ฒ ์ด์ด ๋ฒจํธ๋ฅผ ์์๋๋ก ๊ฐ์ธ๋ฉฐ ๋๊ณ ์๋ค. ๋ฒจํธ๋ ๊ธธ์ด 1 ๊ฐ๊ฒฉ์ผ๋ก 2N๊ฐ์ ์นธ์ผ๋ก ๋๋์ด์ ธ ์์ผ๋ฉฐ, ๊ฐ ์นธ์๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด 1๋ถํฐ 2N๊น์ง์ ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์๋ค.
๋ฒจํธ๊ฐ ํ ์นธ ํ์ ํ๋ฉด 1๋ฒ๋ถํฐ 2N-1๋ฒ๊น์ง์ ์นธ์ ๋ค์ ๋ฒํธ์ ์นธ์ด ์๋ ์์น๋ก ์ด๋ํ๊ณ , 2N๋ฒ ์นธ์ 1๋ฒ ์นธ์ ์์น๋ก ์ด๋ํ๋ค. i๋ฒ ์นธ์ ๋ด๊ตฌ๋๋ Ai์ด๋ค. ์์ ๊ทธ๋ฆผ์์ 1๋ฒ ์นธ์ด ์๋ ์์น๋ฅผ "์ฌ๋ฆฌ๋ ์์น", N๋ฒ ์นธ์ด ์๋ ์์น๋ฅผ "๋ด๋ฆฌ๋ ์์น"๋ผ๊ณ ํ๋ค.
์ปจ๋ฒ ์ด์ด ๋ฒจํธ์ ๋ฐ์ค ๋ชจ์ ๋ก๋ด์ ํ๋์ฉ ์ฌ๋ฆฌ๋ ค๊ณ ํ๋ค. ๋ก๋ด์ ์ฌ๋ฆฌ๋ ์์น์๋ง ์ฌ๋ฆด ์ ์๋ค. ์ธ์ ๋ ์ง ๋ก๋ด์ด ๋ด๋ฆฌ๋ ์์น์ ๋๋ฌํ๋ฉด ๊ทธ ์ฆ์ ๋ด๋ฆฐ๋ค. ๋ก๋ด์ ์ปจ๋ฒ ์ด์ด ๋ฒจํธ ์์์ ์ค์ค๋ก ์ด๋ํ ์ ์๋ค. ๋ก๋ด์ ์ฌ๋ฆฌ๋ ์์น์ ์ฌ๋ฆฌ๊ฑฐ๋ ๋ก๋ด์ด ์ด๋ค ์นธ์ผ๋ก ์ด๋ํ๋ฉด ๊ทธ ์นธ์ ๋ด๊ตฌ๋๋ ์ฆ์ 1๋งํผ ๊ฐ์ํ๋ค.
์ปจ๋ฒ ์ด์ด ๋ฒจํธ๋ฅผ ์ด์ฉํด ๋ก๋ด๋ค์ ๊ฑด๋ํธ์ผ๋ก ์ฎ๊ธฐ๋ ค๊ณ ํ๋ค. ๋ก๋ด์ ์ฎ๊ธฐ๋ ๊ณผ์ ์์๋ ์๋์ ๊ฐ์ ์ผ์ด ์์๋๋ก ์ผ์ด๋๋ค.
- ๋ฒจํธ๊ฐ ๊ฐ ์นธ ์์ ์๋ ๋ก๋ด๊ณผ ํจ๊ป ํ ์นธ ํ์ ํ๋ค.
- ๊ฐ์ฅ ๋จผ์ ๋ฒจํธ์ ์ฌ๋ผ๊ฐ ๋ก๋ด๋ถํฐ, ๋ฒจํธ๊ฐ ํ์ ํ๋ ๋ฐฉํฅ์ผ๋ก ํ ์นธ ์ด๋ํ ์ ์๋ค๋ฉด ์ด๋ํ๋ค. ๋ง์ฝ ์ด๋ํ ์ ์๋ค๋ฉด ๊ฐ๋งํ ์๋๋ค.
- ๋ก๋ด์ด ์ด๋ํ๊ธฐ ์ํด์๋ ์ด๋ํ๋ ค๋ ์นธ์ ๋ก๋ด์ด ์์ผ๋ฉฐ, ๊ทธ ์นธ์ ๋ด๊ตฌ๋๊ฐ 1 ์ด์ ๋จ์ ์์ด์ผ ํ๋ค.
- ์ฌ๋ฆฌ๋ ์์น์ ์๋ ์นธ์ ๋ด๊ตฌ๋๊ฐ 0์ด ์๋๋ฉด ์ฌ๋ฆฌ๋ ์์น์ ๋ก๋ด์ ์ฌ๋ฆฐ๋ค.
- ๋ด๊ตฌ๋๊ฐ 0์ธ ์นธ์ ๊ฐ์๊ฐ K๊ฐ ์ด์์ด๋ผ๋ฉด ๊ณผ์ ์ ์ข ๋ฃํ๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด 1๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
์ข ๋ฃ๋์์ ๋ ๋ช ๋ฒ์งธ ๋จ๊ณ๊ฐ ์งํ ์ค์ด์๋์ง ๊ตฌํด๋ณด์. ๊ฐ์ฅ ์ฒ์ ์ํ๋๋ ๋จ๊ณ๋ 1๋ฒ์งธ ๋จ๊ณ์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N, K๊ฐ ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ A1, A2, ..., A2N์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
๋ช ๋ฒ์งธ ๋จ๊ณ๊ฐ ์งํ ์ค์ผ๋ ์ข ๋ฃ๋์๋์ง ์ถ๋ ฅํ๋ค.
ํ์ด
while ๋ฌธ์ผ๋ก ํ ํด์ฉ ์งํํ๋ค.
1๏ธโฃ ์ปจ๋ฒ ์ด์ด ๋ฒจํธ ์ด๋ ๐ 2๏ธโฃ ๋ก๋ด ์ด๋ ๐ 3๏ธโฃ ๋ด๊ตฌ๋๊ฐ 0์ธ ๋ฒจํธ๊ฐ K๊ฐ ์ด์์ธ์ง ํ์ธ ์ผ๋ก ํ ํด ์งํโผ๏ธ
1๏ธโฃ ์ปจ๋ฒ ์ด์ด ๋ฒจํธ ์ด๋ beltMove()
- ๊ฐ ๋ฒจํธ์ ๋ด๊ตฌ๋๋ฅผ ๋ค์ ์์น๋ก ์ฎ๊ธฐ๊ธฐ
- ๋ก๋ด ์ด๋ ๐ N ์์น์์ ๋ก๋ด์ด ๋ด๋ฆฌ๊ธฐ ๋๋ฌธ์ 0 ์์น์๋ ๋ก๋ด ์กด์ฌ โ
2๏ธโฃ ๋ก๋ด ์ด๋ robotMove()
- i ์์น์ ๋ก๋ด์ด ์กด์ฌํ๊ณ , i+1 ์์น์ ๋ก๋ด์ด ์กด์ฌํ์ง ์๊ณ , i+1 ์์น์ ๋ด๊ตฌ๋๊ฐ 1 ์ด์์ด๋ฉด ๐ i ์์น์ ๋ก๋ด์ i+1 ์์น๋ก ์ด๋
- i+1 ์์น์ ๋ด๊ตฌ๋ -1
- ์ฌ๋ผ๊ฐ๋ ์์น(0)์ ๋ด๊ตฌ๋๊ฐ 1 ์ด์์ด๊ณ , ๋ก๋ด์ด ์๋ค๋ฉด ๋ก๋ด์ ์ฌ๋ ค์ฃผ๊ณ ๋ด๊ตฌ๋ -1
3๏ธโฃ ๋ด๊ตฌ๋๊ฐ 0์ธ ๋ฒจํธ๊ฐ K๊ฐ ์ด์์ธ์ง ํ์ธ isEnd()
- 0 ~ 2๏นกN - 1 ์ ์ปจ๋ฒ ์ด์ด ๋ฒจํธ์ ๋ด๊ตฌ๋ ํ์ธ
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main_BOJ_20055_์ปจ๋ฒ ์ด์ด๋ฒจํธ์์๋ก๋ด {
static int N, K;
static int[] belt;
static boolean[] robot;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer = new StringTokenizer(br.readLine());
N = Integer.parseInt(stringTokenizer.nextToken());
K = Integer.parseInt(stringTokenizer.nextToken());
belt = new int[2*N];
robot = new boolean[N];
// ๋ก๋ด์ N+1์นธ์์ ๋ด๋ฆฌ๊ธฐ๋๋ฌธ์ N๊ฐ!
stringTokenizer = new StringTokenizer(br.readLine());
for(int i = 0 ; i < 2*N ;i++){
belt[i] = Integer.parseInt(stringTokenizer.nextToken());
}
int turn = 0;
while(true){
turn++;
beltMove();
robotMove();
if(isEnd())
break;
}
System.out.println(turn);
}
private static boolean isEnd() {
int cnt = 0;
for(int i = 0 ; i < 2*N ; i++){
if(belt[i] == 0)
cnt++;
if(cnt >= K)
return true;
}
return false;
}
private static void robotMove() {
// ๋ก๋ด ๋ด๋ฆฌ๊ธฐ
if(robot[N-1])
robot[N-1] = false;
// ๋ก๋ด ์ด๋
for(int i = N-2 ; i >= 0 ; i--){
if(!robot[i+1] && robot[i] && belt[i+1] > 0){
robot[i] = false;
robot[i+1] = true;
belt[i+1]--;
}
}
// ์ฌ๋ผ๊ฐ๋ ์์น์ ๋ก๋ด์ด ์๊ณ , ๋ด๊ตฌ๋๊ฐ 1์ด์์ด๋ฉด ์ฌ๋ฆฌ๊ธฐ
if(!robot[0] && belt[0] >= 1){
robot[0] = true;
belt[0]--;
}
}
private static void beltMove() {
// ์ปจ๋ฒ ์ด๋ ๋ฒจํธ ์ด๋
int tmp = belt[2*N-1];
for(int i = 2*N-1 ; i > 0 ; i--){
belt[i] = belt[i-1];
}
belt[0] = tmp;
// ๋ก๋ด์ด๋
for(int i = N-1 ; i > 0; i--){
robot[i] = robot[i-1];
}
// N์์ ๋ก๋ด์ด ๋ด๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ด๋ ํ์๋ 0์ ๋ก๋ด์ด ์์
robot[0] = false;
}
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ๋ฐฑ์ค / BOJ 1713 ] ํ๋ณด ์ถ์ฒํ๊ธฐ (0) | 2021.10.01 |
---|---|
[ ๋ฐฑ์ค / BOJ 5766 ] ํ ์๋ฒ์ง๋ ์ ๋ช ํด! (0) | 2021.10.01 |
[ ๋ฐฑ์ค / BOJ 1120] ๋ฌธ์์ด (0) | 2021.09.29 |
[ ๋ฐฑ์ค / BOJ 14467 ] ์๊ฐ ๊ธธ์ ๊ฑด๋๊ฐ ์ด์ 1 (0) | 2021.09.15 |
[ ๋ฐฑ์ค / BOJ 17070 ] ํ์ดํ ์ฎ๊ธฐ๊ธฐ 1 (0) | 2021.09.15 |