[c++] BOJ 1941 :: ์†Œ๋ฌธ๋‚œ ์น ๊ณต์ฃผ
Algorithm ๋ฌธ์ œ/BOJ 2021. 8. 24. 21:57

๋ฌธ์ œ ์†Œ๋ฌธ๋‚œ ์น ๊ณต์ฃผ ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ ์ด 25๋ช…์˜ ์—ฌํ•™์ƒ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ์—ฌํ•™์ƒ๋ฐ˜์€ 5*5์˜ ์ •์‚ฌ๊ฐํ˜• ๊ฒฉ์ž ํ˜•ํƒœ๋กœ ์ž๋ฆฌ๊ฐ€ ๋ฐฐ์น˜๋˜์—ˆ๊ณ , ์–ผ๋งˆ ์ง€๋‚˜์ง€ ์•Š์•„ ์ด๋‹ค์†œ๊ณผ ์ž„๋„์—ฐ์ด๋ผ๋Š” ๋‘ ํ•™์ƒ์ด ๋‘๊ฐ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ๋‹ค๋ฅธ ํ•™์ƒ๋“ค์„ ํœ˜์–ด์žก๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ณง ๋ชจ๋“  ์—ฌํ•™์ƒ์ด ‘์ด๋‹ค์†œํŒŒ’์™€ ‘์ž„๋„์—ฐํŒŒ’์˜ ๋‘ ํŒŒ๋กœ ๊ฐˆ๋ผ์ง€๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ, ์–ผ๋งˆ ์ง€๋‚˜์ง€ ์•Š์•„ ‘์ž„๋„์—ฐํŒŒ’๊ฐ€ ์„ธ๋ ฅ์„ ํ™•์žฅ์‹œํ‚ค๋ฉฐ ‘์ด๋‹ค์†œํŒŒ’๋ฅผ ์œ„ํ˜‘ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์œ„๊ธฐ์˜์‹์„ ๋Š๋‚€ ‘์ด๋‹ค์†œํŒŒ’์˜ ํ•™์ƒ๋“ค์€ ๊ณผ๊ฐํžˆ ํ˜„์žฌ์˜ ์ฒด์ œ๋ฅผ ํฌ๊ธฐํ•˜๊ณ , ‘์†Œ๋ฌธ๋‚œ ์น ๊ณต์ฃผ’๋ฅผ ๊ฒฐ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์œ ์ผํ•œ ์ƒ์กด ์ˆ˜๋‹จ์ž„์„ ๊นจ๋‹ฌ์•˜๋‹ค. ‘์†Œ๋ฌธ๋‚œ ์น ๊ณต์ฃผ’๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฆ„์ด ์ด๋ฆ„์ธ ๋งŒํผ, 7๋ช…์˜ ์—ฌํ•™์ƒ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค. ๊ฐ•ํ•œ ๊ฒฐ์†๋ ฅ์„ ์œ„ํ•ด, 7๋ช…์˜ ์ž๋ฆฌ๋Š” ์„œ๋กœ ๊ฐ€๋กœ๋‚˜ ์„ธ๋กœ๋กœ ๋ฐ˜๋“œ์‹œ ์ธ์ ‘ํ•ด ์žˆ์–ด์•ผ..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ˆœ์—ด๊ณผ ์กฐํ•ฉ (์ฝ”๋“œ, next_permutation ์ด์šฉ, ์ง์ ‘ ๊ตฌํ˜„)
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 9. 7. 10:44

์ˆœ์—ด๊ณผ ์กฐํ•ฉ ์ˆœ์—ด ์ •์˜ ์ˆœ์—ด์€ ์ค‘๋ณต์—†์ด n๊ฐœ ์ค‘ r๊ฐœ๋ฅผ ๋ฝ‘์•„ ์ˆœ์„œ๋ฅผ ์ •ํ•ด ๋‚˜์—ดํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ A, B, C ์„ธ๊ฐ€์ง€ ์›์†Œ๊ฐ€ ์žˆ์„ ๋•Œ, 2๊ฐœ๋ฅผ ๋ฝ‘์•„ ์ˆœ์„œ๋ฅผ ์ •ํ•˜๋Š” ๊ฒƒ์„ 3P2๋ผ๊ณ  ํ•œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋‚˜์˜ค๋ฏ€๋กœ ์ด 6๊ฐ€์ง€ ์ด๋‹ค. ์ˆœ์—ด์€ P(Permutation)๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. $$ {}n\mathrm{P}{r} = \frac{n!}{(n-r)!} $$ ์ค‘๋ณต ์ˆœ์—ด์ด๋ผ๋Š” ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ๋Š” ์ˆœ์—ด ์ค‘ ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๊ฒƒ์„ ๋‹ค์‹œ ๋ฝ‘์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค. ์ค‘๋ณต ์ˆœ์—ด์€ Π๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. $$ {n}\mathrm{\pi}{r} = n^r $$ ๊ตฌํ˜„ ์ˆœ์—ด // ์ง์ ‘ ๊ตฌํ˜„ void swap(vector& set, int a, int b){ int tmp = set[a]; ..