๐Ÿ˜‰ 46

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์นด๋ผ์ถ”๋ฐ”์˜ ๋น ๋ฅธ ๊ณฑ์…ˆ(Karatsuba)

123 × 456 = ? ํ‰์†Œ์— ์ผ์ƒ์ ์œผ๋กœ ๊ณ„์‚ฐํ•˜๋˜ ๋ฐฉ๋ฒ•์„ ๋ถ„์„์ ์œผ๋กœ ํ’€์–ด์จ๋ณด๋ฉด ์ด๋ ‡๋‹ค. ์šฐ๋ฆฌ๋Š” ํ‰์†Œ ํ•œ ์ž๋ฆฌ์— 0๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ์ˆซ์ž๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์‹ญ์ง„๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ ์ž๋ฆฌ๋ณ„๋กœ ์‹ญ์˜ ์ž๋ฆฌ ์ˆ˜๋Š” ๋‹ค์Œ ์นธ์œผ๋กœ ๋„˜๊ฒจ์ค€๋‹ค(์˜ˆ๋ฅผ ๋“ค์–ด 10์˜ ์ž๋ฆฌ 27์€ (20 + 7)์ด๋ฏ€๋กœ 100์˜ ์ž๋ฆฌ๋กœ 2๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค). (4 * 10000) + (13 * 1000) + (28 * 100) + (27 * 10) + (18 * 1) = (5 * 10000) + (6 * 1000) + (0 * 100) + (8 * 10) + (8 * 1) = 56088 ์ตœ์ข…์ ์œผ๋กœ ๊ฐ’์„ ์ด๋ ‡๊ฒŒ ๊ณ„์‚ฐํ•ด ๋‚ผ ์ˆ˜์žˆ๋‹ค. 456์˜ ๊ฐฏ์ˆ˜๋งŒํผ, 123์˜ ๊ฐ ์›์†Œ(1, 2, 3)๊ณผ ํ•œ ๋ฒˆ์”ฉ ๊ณฑ์…ˆ์—ฐ์‚ฐ์„ ํ•ด์•ผํ•จ์„ ์•Œ ์ˆ˜์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ „ํ†ต์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋งŒ์•ฝ ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋ถ„ํ• ์ •๋ณต(Divide & Conquer)

์˜ ํ•ด๋‹น ๋‹จ์› ๋ฐ‘์ค„์ž…๋‹ˆ๋‹ค. "๋ถ„ํ•  ์ •๋ณต์„ ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์€ ๋Œ€๊ฐœ ์„ธ ๊ฐ€์ง€์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ๋น„์Šทํ•œ ํฌ๊ธฐ์˜ ๋” ์ž‘์€ ๋ฌธ์ œ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ณผ์ •(divide) ๊ฐ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ตฌํ•œ ๋‹ต์„ ์›๋ž˜ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‹ต์œผ๋กœ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ณผ์ •(merge) ๋”์ด์ƒ ๋‹ต์„ ๋ถ„ํ• ํ•˜์ง€ ์•Š๊ณ  ๊ณง์žฅ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ์ž‘์€ ๋ฌธ์ œ(base case)" "๊ฐ™์€ ๋ฌธ์ œ๋ผ๋„ ์–ด๋–ป๊ฒŒ ๋ถ„ํ• ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ์‹œ๊ฐ„ ๋ณต์žก๋„ ์ฐจ์ด๊ฐ€ ์ปค์ง„๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๋Š” ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ฒˆ ์ค‘๋ณต๋˜์–ด ๊ณ„์‚ฐ๋˜๋ฉด์„œ ์‹œ๊ฐ„์„ ์†Œ๋ชจํ•˜๋Š” ๋ถ€๋ถ„ ๋ฌธ์ œ๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค." โ€‹โ€‹ ๋ณ‘ํ•ฉ ์ •๋ ฌ (Merge Sort) ์ˆ˜์—ด์„ ๊ฐ€์šด๋ฐ์—์„œ ์ชผ๊ฐœ ๋‘ ๊ฐœ์˜ ๋ถ€๋ถ„์ˆ˜์—ด๋กœ ๋งŒ๋“ค๊ณ , ๊ฐ ๋ถ€๋ถ„ ์ˆ˜์—ด์— ๋Œ€ํ•ด์„œ๋„ ๊ฐ™์€ ์ ˆ์ฐจ๋ฅผ ์žฌ๊ท€ ํ˜ธ์ถœํ•œ๋‹ค. ๊ธฐ์ € ์‚ฌ๋ก€(base case)๊นŒ์ง€ ์ชผ๊ฐœ ๊ฐ’์ด ๋ฐ˜ํ™˜๋˜๋ฉด, ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์™„์ „ํƒ์ƒ‰(CLOCKSYNC)

algospot.com :: CLOCKSYNC Synchronizing Clocks ๋ฌธ์ œ ์ •๋ณด ๋ฌธ์ œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด 4 x 4 ๊ฐœ์˜ ๊ฒฉ์ž ํ˜•ํƒœ๋กœ ๋ฐฐ์น˜๋œ 16๊ฐœ์˜ ์‹œ๊ณ„๊ฐ€ ์žˆ๋‹ค. ์ด ์‹œ๊ณ„๋“ค์€ ๋ชจ๋‘ 12์‹œ, 3์‹œ, 6์‹œ, ํ˜น์€ 9์‹œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค. ์ด ์‹œ๊ณ„๋“ค์ด ๋ชจ๋‘ 12์‹œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๏ฟฝ๏ฟฝ algospot.com #include #include #include using namespace std; queue answer; const int button[10][5] = { {0, 1, 2, -1, -1}, {3, 7, 9, 11, -1}, {4, 10, 14, 15, -1}, {0, 4, 5, 6, 7}, {6, 7, 8, 10, 12}, {0, 2, 14, 15, -1}, {3, 14, 15, -1, -1}, ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์™„์ „ํƒ์ƒ‰(BOARDCOVER)

algospot.com :: BOARDCOVER ๊ฒŒ์ž„ํŒ ๋ฎ๊ธฐ ๋ฌธ์ œ ์ •๋ณด ๋ฌธ์ œ H*W ํฌ๊ธฐ์˜ ๊ฒŒ์ž„ํŒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์ž„ํŒ์€ ๊ฒ€์€ ์นธ๊ณผ ํฐ ์นธ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฒฉ์ž ๋ชจ์–‘์„ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ด ์ค‘ ๋ชจ๋“  ํฐ ์นธ์„ 3์นธ์งœ๋ฆฌ L์ž ๋ชจ์–‘์˜ ๋ธ”๋ก์œผ๋กœ ๋ฎ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด ๏ฟฝ๏ฟฝ www.algospot.com #include #include #include using namespace std; queue answer; int row, col; int matrix[20][20]; int run() { /* ์™ผ์ชฝ ์œ„ ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜์—ฌ ๋น„์–ด์žˆ๋Š” ์นธ์„ x,y์— ์ €์žฅ * flag ์ง€์ •ํ•˜์—ฌ, ์ฐพ๋Š” ์ฆ‰์‹œ ๋ฐ˜๋ณต๋ฌธ ํƒˆ์ถœ * x, y๊ฐ€ ๋ฐ˜๋ณต๋ฌธ์„ ๊ทธ๋Œ€๋กœ ํ†ต๊ณผํ•˜๋ฉด ๋ชจ๋‘ ์ฑ„์›Œ์กŒ๋‹ค๋Š” ์˜๋ฏธ >> 1์„ ๋ฐ˜ํ™˜(result์— ๋”ํ•ด์ง) */ int x = -1; int ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์™„์ „ํƒ์ƒ‰(PICNIC)

algospot.com :: PICNIC ์†Œํ’ ๋ฌธ์ œ ์ •๋ณด ๋ฌธ์ œ ์•ˆ๋“œ๋กœ๋ฉ”๋‹ค ์œ ์น˜์› ์ต์Šคํ”„๋ ˆ์Šค๋ฐ˜์—์„œ๋Š” ๋‹ค์Œ ์ฃผ์— ์œจ๋™๊ณต์›์œผ๋กœ ์†Œํ’์„ ๊ฐ‘๋‹ˆ๋‹ค. ์›์„ ์„ ์ƒ๋‹˜์€ ์†Œํ’ ๋•Œ ํ•™์ƒ๋“ค์„ ๋‘ ๋ช…์”ฉ ์ง์„ ์ง€์–ด ํ–‰๋™ํ•˜๊ฒŒ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์„œ๋กœ www.algospot.com #include #include using namespace std; queue answer; // matrix์— ์นœ๊ตฌ ๊ด€๊ณ„, paired์— ์นœ๊ตฌ๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€ ์ €์žฅ int matrix[10][10]; int paired[10]; int student_num, pair_num; int makePair() { // ์ง์ด ์—†๋Š” ํ•™์ƒ์ด ์žˆ๋‹ค๋ฉด idx์— ์ €์žฅํ•˜๊ณ , ๋ชจ๋‘ ์ง์ด ์žˆ๋‹ค๋ฉด 1์„ ๋ฐ˜ํ™˜ int idx = -1; for (int i = 0; i < stu..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋ฌด์‹ํ•˜๊ฒŒ ํ’€๊ธฐ(Brute-Force)

์˜ ํ•ด๋‹น ๋‹จ์› ๋ฐ‘์ค„์ž…๋‹ˆ๋‹ค. "๊ณต๋ถ€๋ฅผ ์—ด์‹ฌํžˆ ํ• ์ˆ˜๋ก ๋ณต์žกํ•˜์ง€๋งŒ ์šฐ์•„ํ•œ ๋‹ต์•ˆ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๋งˆ์Œ์ด ์ปค์ง€๊ธฐ ๋งˆ๋ จ์ด๊ณ , ๊ทธ๋ž˜์„œ ๋ฐ”๋กœ ์•ž์— ๋ณด์ด๋Š” ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•˜๋ฉฐ ํ‹€๋ฆด ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์€ ๋‹ต์•ˆ์„ ๊ฐ„๊ณผํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค." "์ปดํ“จํ„ฐ์˜ ์ตœ๋Œ€ ์žฅ์ ์€ ๊ฒฐ๊ตญ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค๋Š” ๊ฒƒ์ด๋‹ˆ๊นŒ์š”. ํŠนํžˆ ํ˜„์‹ค ์„ธ๊ณ„์˜ ๋ฌธ์ œ ์ค‘์—๋Š” ์ž…๋ ฅ์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์•„ ์ปดํ“จํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌํ•˜๊ธฐ์—๋Š” ๋ณ„ ๊ฒƒ ์•„๋‹ˆ์ง€๋งŒ, ์†์œผ๋กœ ์ง์ ‘ ํ’€๊ธฐ์—๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ๋Š”๋ฐ, ์ด๋Ÿด ๋•Œ ์™„์ „ํƒ์ƒ‰(๊ฐ€๋Šฅํ•œ ๋ฐฉ๋ฒ•์„ ์ „๋ถ€ ๋งŒ๋“ค์–ด ๋ณด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜)์€ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๋ฉด์„œ๋„ ๊ฐ€์žฅ ๊ตฌํ˜„ํ•˜๊ธฐ ์‰ฌ์šด ๋Œ€์•ˆ์ด ๋ฉ๋‹ˆ๋‹ค." "์šฐ๋ฆฌ๊ฐ€ ๋“ค์—ฌ๋‹ค ๋ณด๋Š” ๋ฒ”์œ„๊ฐ€ ์ž‘์•„์ง€๋ฉด ์ž‘์•„์งˆ์ˆ˜๋ก ๊ฐ ์กฐ๊ฐ๋“ค์˜ ํ˜•ํƒœ๊ฐ€ ์œ ์‚ฌํ•ด์ง€๋Š” ์ž‘์—…๋“ค์„ ๋งŽ์ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ž‘์—…์„ ๊ตฌํ˜„ํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…์ด ๋ฐ”๋กœ ์žฌ๊ท€ ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค...