์ˆœ์—ด

notion image
input = [a,b,c]
count = 0;

func permutation(arr) {
	for i : 0 ~ arr.length, i++
		for j : 0 ~ arr.length, j++
			if i == j continue;
		for k : 0 ~ arr.length, k++
			if i == k continue;
			if j == k continue;
			print( arr[i], arr[j], arr[k] )
			count++
}
์ˆœ์—ด์„ ๊ฑฐ๋“ญํ• ์ˆ˜๋ก ์ด๋ฏธ ์‚ฌ์šฉํ•œ ์›์†Œ๋ฅผ continue๋กœ ๋ง‰์•„์„œ ์“ฐ์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
ํ•˜์ง€๋งŒ ์ˆœ์—ด ๊ธธ์ด๊ฐ€ ๊ธธ์–ด์งˆ์ˆ˜๋ก for๋ฌธ์„ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•ด์„œ ์ค‘์ฒฉํ•ด์•ผํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
๋”ฐ๋ผ์„œ ์žฌ๊ท€์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ์ข‹๋‹ค.
notion image
ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์‹œ์ž‘ ์ธ๋ฑ์Šค s์™€ ๋ฝ‘์„ ๊ฐœ์ˆ˜ r๋ฅผ ์ง€์ •ํ•ด์ค€๋‹ค.
์‹œ์ž‘์ธ๋ฑ์Šค s ์™œ ์ง€์ •ํ•ด์ฃผ๋Š”๊ฐ€? ์ด๋ฏธ ์„ ํƒํ•œ ์›์†Œ๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š๊ฒŒ ํ•˜๋ ค๊ณ 
 

๊ณผ์ •

s = 0, r = 2 [ 'a', ]
s = 1, r = 2, i = 1 [ 'a', 'b' ](ํ•œ๋ฒˆ ํƒ€๊ณ  ๋‚ด๋ ค๊ฐ€์„œ i = s์ด๋ฏ€๋กœ)
s = 2, r = 2 ['a', 'b', 'c'](๋งˆ์ง€๋ง‰ ์›์†Œ๋Š” ์ด๋ฏธ ์ •ํ•ด์ ธ ์žˆ์œผ๋ฏ€๋กœ ๋ฐ”๋กœ ์ถœ๋ ฅ)
return;
s = 1, r = 2, i = 2 [ 'a', 'c' ] ์›์†Œ ์›์ƒ๋ณต๊ท€๋ฅผ ํ•˜๊ณ ๋‚˜์„œ for๋ฌธ์˜ ๋‹ค์Œ ๋ฃจํ”„๊ฐ€ ๋œ๋‹ค๋ฉด. i++๋˜์–ด ์Šค์™‘๋„ ์ง„ํ–‰๋œ๋‹ค.
s = 2, r = 2 [ 'a', 'c', 'b' ]
return
(...)