NM2 - by Choice

์ฒ˜์Œ ์งฐ๋˜ ์ฝ”๋“œ : ์•„๋ž˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์„ ํƒํ•œ ๊ฒฝ์šฐ์™€ ์„ ํƒํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ 2๊ฐ€์ง€๋กœ ๋‚˜๋ˆ„์–ด์„œ ์ฒ˜๋ฆฌํ•ด์ฃผ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋””๋ฒ„๊น…์„ ๋ช‡๋ฒˆ ํ•ด๋ณด๋ฉด ๋Œ€์ถฉ ์•Œ ์ˆ˜ ์žˆ๋Š”๋ฐ 1๋ฒˆ ๊ฒฝ์šฐ์—์„œ ๋งŒ๋“  ์•”ํ˜ธ๋ฌธ์— 2๋ฒˆ ๊ฒฝ์šฐ ๋‚˜์ค‘์— ๋‹ค์‹œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค!

๊ทธ๋Ÿฐ๋ฐ ๋””๋ฒ„๊น…์„ ํ•ด๋ณด๋ฉด 1๋ฒˆ ์„ ํƒํ•œ ๊ฒฝ์šฐ๋งŒ ์‹คํ–‰์‹œ์ผœ์ค˜๋„ ์ค‘๋ณต์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์˜ค๋ฆ„์ฐจ์ˆœ ์•”ํ˜ธ๋ฌธ์ด ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค!!!!!!

์˜ˆ๋ฅผ ๋“ค์–ด 1,2,3,4,5,6 6๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ์žˆ๊ณ , ์ด์ค‘ 3๊ฐœ๋ฅผ ์„ ํƒํ•ด์„œ ์ˆœ์—ด์„ ๋งŒ๋“ ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด 1๋ฒˆ ๊ฒฝ์šฐ : 123, 124,125,126//์žฌ๊ท€ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ์ด๋ ‡๊ฒŒ ์ญ‰ ๋งŒ๋“ค์–ด์ง€๊ณ , ์•„๋ž˜ 2๋ฒˆ ๊ฒฝ์šฐ 134,135,136 ๋งŒ๋“  ํ›„ 134,135,136//i-for๋ฌธ์—์„œ i๊ฐ€ 1์ฆ๊ฐ€ํ•˜์—ฌ i+1๋ฒˆ์งธ ์ˆซ์ž๋กœ ๋‘๋ฒˆ์งธ์ž๋ฆฌ ์ˆซ์ž ๋‹ค์‹œ ๋งŒ๋“ฆ. ์œ„๊ณผ์ • ๋ฐ˜๋ณต 145,146 156 2๋ฒˆ ๊ฒฝ์šฐ : 134,135,136 145,146 156

์ด๋Ÿฐ์‹์œผ๋กœ ๋ฐ˜๋ณต๋˜๋Š” ๊ฒƒ์„ ๋Œ€์ถฉ ์•Œ ์ˆ˜ ์žˆ๋‹ค!

public static void go(int index,int selected,String str) {//index : ๊ณ ๋ฅธ ๋ฌธ์ž ๊ฐฏ์ˆ˜, selected : input ๋ฌธ์ž ๋ฐฐ์—ด์—์„œ ๋ช‡๋ฒˆ์งธ๋ถ€ํ„ฐ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€,str : ์ง€๊ธˆ๊นŒ์ง€ ์„ ํƒํ•œ ๋ฌธ์ž์—ด
		//2.์ •๋‹ต ์ฐพ์€ ๊ฒฝ์šฐ - ์กฐ๊ฑด ๊ฒ€์‚ฌ.
		if(index==L) {//๊ฐฏ์ˆ˜ ๋งž์œผ๋ฉด 
			if(check(str)) {//์กฐ๊ฑด ๋งž๋Š”์ง€ ํ™•์ธ.
				sb.append(str+"\n");
				return;
			}
		}
		//1.์ •๋‹ต ๋  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ.
		if(index>L) return;//์ง€๊ธˆ๊ป ๋งŒ๋“  ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ C๋ณด๋‹ค ํฌ๋ฉด ๊ทธ๋งŒ.
		//3.๋‹ค์Œ ๊ฒฝ์šฐ ํ˜ธ์ถœ.
		for(int i=selected;i<C;i++) {//C๊ฐœ ๋ฌธ์ž ์ค‘์—์„œ selected๋ฒˆ์งธ๋ถ€ํ„ฐ ๊ณ ๋ฅธ๋‹ค!
			//1.์„ ํƒํ•œ ๊ฒฝ์šฐ.
			go(index+1,i+1,str+input[i]);
			//2.์„ ํƒ์•ˆํ•œ ๊ฒฝ์šฐ
			go(index,i+1,str+"");
		}
	}

Last updated