Conveyer Belt Robot
์ด๋ ค์ ๋ ๋ถ๋ถ
๋ฌธ์ ์ดํด๋ถํฐ ์ฝ์ง ์์๋ค.

๊ตฌํ ๋ฌธ์ : ๋ฌธ์ ์์ ์ํค๋ ๋๋ก ์ญ ๋ฐ๋ผํ๋ฉด ๋๋ค. ์ผ๋จ ํ์ํ ์๋ฃ๊ตฌ์กฐ/๊ฐ์ฒด๋ถํฐ ์๊ฐํด๋ณด์. 1. ๋ด๊ตฌ๋ ๊ฐ์ ์ ์ฅํ ์ ์ํ ๋ฐฐ์ด ์๊ณ ๋ฆฌ์ฆ ๋ด๊ตฌ๋๊ฐ == 0์ธ ์นธ ๊ฐฏ์ 0 ์ดํ์ผ ๋๊น์ง ๋ฐ๋ณต 1. ๋ฒจํธ, ๋ก๋ด ํ์นธ์ฉ ํ์ . ๋ด๋ฆฌ๋ ์์น ๋ก๋ด ๋ด๋ฆฐ๋ค. ๋ฒจํธ ํ์ , ๋ด๊ตฌ๋๊ฐ ์ ๋ฐ์ดํธ ์ ์ฃผ์ ์ฌํญ : i,i+1์์ A[i+1] = A[i]๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๋(N-1)์์ ๋ถํฐ ์์ํด์ A[N-1] ๊ฐ์ ์์ ๋ณ์์ ๋จผ์ ์ ์ฅํด์ค๋ค! =>A[0]์ ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ A[N-1]๊ฐ์ ๋จผ์ ์ฑ๊ฒจ์ค๋ค!
//1.๋ฒจํธ๊ฐ ๊ฐ ์นธ ์์ ์๋ ๋ก๋ด๊ณผ ํจ๊ป ํ ์นธ ํ์ ํ๋ค. ๋ด๋ฆฌ๋ ์์น์ ์๋ ๋ก๋ด์ ๋ด๋ฆฐ๋ค.
//์ปจ๋ฒ ์ด์ด ๋ฒจํธ ํ์ .
int tmp = A[2*n-1];
for(int i=A.length-1;i>0;i--) {
A[i] = A[i-1];
}
A[0] = tmp;
//๋ก๋ด ํ์
//๋ก๋ด ํ์ ํ๋ฉด์ ์ฌ๋ฆฌ๋ ์์น, ๋ด๋ฆฌ๋ ์์น ๋ก๋ด์ ์์ด์ง๊ธฐ ๋๋ฌธ์ false ์ฒ๋ฆฌํด์ค๋ค!
for(int i=n-1;i>0;i--) {
robot[i] = robot[i-1];
}
robot[0] = false;
robot[n-1] = false;
2. ๋จผ์ ๋ฒจํธ์ ์ฌ๋ผ๊ฐ ๋ก๋ด๋ถํฐ ์ด๋์ํจ๋ค. ๋ฐ๋ณต ์กฐ๊ฑด : ๋์์(๋ก๋ด ๋ฐฐ์ด์ ๊ธธ์ด-1)๋ถํฐ ์์. i-1 ๋๋ฌธ์ ๋ฐ๋ณต์ 0๋ณด๋ค ํด ๋๊น์ง. robot[i] = true; robot[i-1] = false; //i-1๋ฒ์งธ ๋ก๋ด์ด i๋ฒ์งธ๋ก ์ฎ๊ฒจ๊ฐ๊ธฐ ๋๋ฌธ์ i-1๋ฒ์งธ๋ false์ฒ๋ฆฌ ํด์ค๋ค.
for(int i=n-1;i>0;i--) {
if(robot[i-1]&&!robot[i]&&A[i]>=1) {
robot[i] = true;
robot[i-1] = false;
A[i]--;
}
}
3. ์ฌ๋ฆฌ๋ ์์น์ ๋ด๊ตฌ๋๊ฐ์ด 0์ด ์๋๋ฉด ๋ก๋ด ์ฌ๋ฆฐ๋ค.
if(A[0]>0) {
robot[0] = true;
A[0]--;
}
cnt++;
1~3์ ์ฐ์ฐ์ A[i]==0 ์ด k๊ฐ ๋ ๋๊น์ง ๋ฐ๋ณตํ๋ค.
public static solution(int cnt){
while(check()){
//1~3 ๋ฐ๋ณต
}
}
public static boolean check() {
int cnt=0;
for(int i=0;i<A.length;i++) {
if(A[i]==0) {
cnt++;
}
}
if(cnt>=k) {
return false;
}
return true;
}

๋ฒจํธ์ ๋ด๊ตฌ๋๊ฐ์ ์ ์ฅํ๋ ๋ฐฐ์ด๊ณผ ๋ก๋ด์ ์ ๋ฌด ์ ์ฅํ๋ ๋ฐฐ์ด์ ๋ฐ๋ก ๋ง๋ค์ด์ ์ด 2๊ฐ์ ๋ฐฐ์ด์ ์ด์ฉํ๋ค.
์๊ณ ๋ฆฌ์ฆ 1. ๋ฒจํธ ํ์ A[n-1] ๊ฐ์ด ๋จผ์ ์ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ A[n-1]๋จผ์ tmp์ ์ ์ฅํด๋๋ค!
//์ปจ๋ฒ ์ด์ด ๋ฒจํธ ํ์ .
int tmp = A[0];
for(int i=2*n;i>0;i--) {
A[i] = A[i-1];
}
A[2*n-1] = tmp;
2. ๋ก๋ด ํ์ 3. ๋ก๋ด ์ด๋ ์กฐ๊ฑด : A[i]-1>=0(A[i]>=1) ์ด๋ํ๋ ์นธ์ i๋ฒ์งธ ์นธ์ด๋ผ๊ณ ํ๋ฉด robot[i] = true, robot[i-1] = false, A[i]--
๊ทผ๋ฐ ๋ก๋ด ํ์ , ๋ก๋ด ์ด๋ ์ ๋ฐ๋ก ํ์ง?
Last updated
Was this helpful?