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?