A Sign of Inequality - Back Tracking

๋ฌธ์ œ ์กฐ๊ฑด์— ๋งž์ง€ ์•Š๊ฑฐ๋‚˜ ๊ณ„์† ์žฌ๊ท€ํ˜ธ์ถœํ•ด๋„ ์ •๋‹ต์ด ๋‚˜์˜ค์ง€ ์•Š์„ ๊ฒฝ์šฐ ๊ณ„์† ์žฌ๊ท€๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ฉˆ์ถ”๋Š” ๊ฒƒ์„ ๋ฐฑํŠธ๋ž™ํ‚น(Back Tracking)์ด๋ผ๊ณ  ํ•œ๋‹ค.

์•ž์—์„œ ํ’€์–ด๋ณธ ๋ถ€๋“ฑํ˜ธ(A Sign of Inequality) ๋ฌธ์ œ๋ฅผ ๋ฐฑํŠธ๋ž˜ํ‚น์„ ์ด์šฉํ•˜์—ฌ ์‹œ๊ฐ„์„ ํ›จ์”ฌ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ๋ฐฉ๋ฒ•์€ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

์ด ๋ฌธ์ œ์—์„œ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๋ž€, ์กฐ๊ฑด์„ ์ฒดํฌํ•ด์„œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋Š” ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์•ž์—์„œ๋Š” ๋‹ค์Œ ๊ฒฝ์šฐ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์กฐ๊ฑด ์ฒดํฌํ•˜์ง€ ์•Š๊ณ  index==n+1์ด ๋˜์•ผ๋งŒ ์กฐ๊ฑด์„ ์ฒดํฌํ•ด์ฃผ์—ˆ๋Š”๋ฐ, ๋ฐฑํŠธ๋ž™ํ‚น๋ฐฉ์‹์—์„œ๋Š” ํ˜„์žฌ์—์„œ ์ˆซ์ž๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ์กฐ๊ฑด์„ ์ฒดํฌํ•ด์ค€๋‹ค!

๋ถ€๋“ฑํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด : input[ ] = {<,<} ํ˜„์žฌ์˜ ์ธ๋ฑ์Šค : index ํ˜„์žฌ ๋„ฃ์„ ์ˆ˜ : i

=> s.charAt(index-1)๊ณผ i๋ฅผ ๋น„๊ตํ•œ๋‹ค!์ด ๋•Œ ๋น„๊ตํ•˜๋Š” ๋ถ€๋“ฑํ˜ธ๋Š” input(index-1)์ด ๋œ๋‹ค! ์กฐ๊ฑด ๊ฒ€์‚ฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ˆ˜๋„์ฝ”๋“œ๋กœ ๋‹ค์‹œ ๊ตฌํ˜„ํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. boolean ok(a,b,op) { if(op == '<') { if(a>b) return false;} if(op == '>') { if(a<b) return false;} return true; }

ํ•˜์ง€๋งŒ ํ˜„์žฌ s.charAt(index-1)์€ char ํƒ€์ž…์ด๊ณ , i๋Š” int ํƒ€์ž…์ด๋‹ค. ๋‘๊ฐœ์˜ ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— char ํƒ€์ž…์œผ๋กœ ํ†ต์ผํ•ด์ค€๋‹ค.=> (char)i+'0'

  • ์†Œ์Šค ์ฝ”๋“œ ๊ตฌํ˜„ 1) ์กฐ๊ฑด ์ฒดํฌ ํ•จ์ˆ˜

static boolean bt_ok(char a,char b,char op) {
		 if(op == '<') { if(a>b) return false;}
		 if(op == '>') { if(a<b) return false;}
		return true;
	}

2) ๋ฐฑํŠธ๋ž™ํ‚น : ํ˜„์žฌ index์— ์ˆ˜ i๋ฅผ ๋„ฃ์„ ๋•Œ๋งˆ๋‹ค ์กฐ๊ฑด ์ฒดํฌ

for(int i=0;i<=9;i++) {
			if(check[i]) continue;
			//๋ฐฑํŠธ๋ž™ํ‚น=>ํ˜„์žฌ ์ˆ˜ ๋„ฃ์„ ๋•Œ ์กฐ๊ฑด์ฒดํฌ๋ฅผํ•˜๋ฉด์„œ ๋„ฃ๋Š”๋‹ค!
			if(index == 0||bt_ok(s.charAt(index-1),(char)(i+'0'),input[index-1])) {
				check[i] = true;
				go(index+1,s+Integer.toString(i));
				check[i] = false;
			}
		}
  • ๊ฒฐ๊ณผ ํ™•์ธ : ๋ฐฑํŠธ๋ž™ํ‚น ์†”๋ฃจ์…˜์ด ์•ฝ 3๋ฐฐ ์ •๋„ ๋” ๋น ๋ฅธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

3๋ฐฐ ๋น ๋ฅธ ๋ฐฑํŠธ๋ž™ํ‚น

Last updated

Was this helpful?