Language/C++ 2

[C++ / Algorithm] ์ˆœ์—ด(next_permutation) ์‚ฌ์šฉ ๋ฐฉ๋ฒ•๊ณผ ์กฐํ•ฉ(Combination) ๊ตฌํ•˜๊ธฐ

์ˆœ์—ด์„ ๊ตฌํ•˜๋Š” next_permutation ํ•จ์ˆ˜ ์ˆœ์—ด ์ˆ˜ํ•™์ ์œผ๋กœ ์ˆœ์—ด(permutation)์ด๋ž€ ์„œ๋กœ ๋‹ค๋ฅธ n๊ฐœ์˜ ์›์†Œ์—์„œ r๊ฐœ๋ฅผ ๋ฝ‘์•„ ํ•œ ์ค„๋กœ ์„ธ์šฐ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์›์†Œ๋ฅผ ํ•œ ์ค„๋กœ ์„ธ์šฐ๊ธฐ ๋•Œ๋ฌธ์— ์›์†Œ์˜ ์กฐํ•ฉ์ด ๊ฐ™๋”๋ผ๋„ ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ด…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ง‘ํ•ฉ {1, 2, 3}์˜ ์›์†Œ๋“ค์˜ ๋ชจ๋“  ์ˆœ์—ด์„ ๊ตฌํ•œ๋‹ค๋ฉด {1, 2, 3} {1, 3, 2} {2, 1, 3} {2, 3, 1} {3, 1, 2} {3, 2, 1} ๋กœ ์ด 6๊ฐ€์ง€๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. next_permutation C++์˜ algorithm ํ—ค๋”์—๋Š” n๊ฐœ์˜ ์›์†Œ์˜ ์ˆœ์—ด์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” next_permutation์ด๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์  ๋ฌธ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 1 2 3 4 5 6 7 // default boo..

Language/C++ 2020.06.26

C++ STL ๋ฒกํ„ฐ(vector) ์„ค๋ช… ๋ฐ ์‚ฌ์šฉ๋ฒ•

C++ STL ์ปจํ…Œ์ด๋„ˆ - ๋ฒกํ„ฐ (std::vector) vector๋Š” ํ—ค๋”ํŒŒ์ผ ์— ์ •์˜๋˜์–ด ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ํ•œ ์ข…๋ฅ˜์ž…๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š” C++ STL์—์„œ ์ž„์˜ ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. vector๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฐฐ์—ด์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ, ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์€ ์ž๋™์œผ๋กœ ์ด๋ค„์ง‘๋‹ˆ๋‹ค. vector ์ปจํ…Œ์ด๋„ˆ๋Š” ๋™์  ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„๋˜๋Š”๋ฐ, ๊ฐ๊ฐ์˜ ์›์†Œ๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์—ฐ์†์ ์œผ๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ vector ์ปจํ…Œ์ด๋„ˆ์˜ ์›์†Œ๋ฅผ ์ฐธ์กฐํ•  ๋•Œ ๋ฐ˜๋ณต์ž(iterator)๋ฅผ ์ด์šฉํ•ด์„œ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ์˜ ์ƒ๋Œ€์  ๊ฑฐ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. vector์˜ ์žฅ์  ๊ฐ๊ฐ์˜ ์›์†Œ๋ฅผ ์ธ๋ฑ์Šค(index) ๊ฐ’์œผ๋กœ ๋ฐ”๋กœ ์ฐธ์กฐ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์›์†Œ๋“ค์„ ์ž„์˜์˜ ์ˆœ์„œ๋กœ ์ ‘๊ทผํ• ..

Language/C++ 2020.06.02