๋ชฉ๋ก๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (208)

๐Ÿ’ป

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ - Greedy Algorithm

ํƒ์š•์  ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? ์–ด๋–ค ์„ ํƒ์„ ํ•ด์•ผํ•  ๋•Œ ๊ทธ ๋‹น์‹œ์— ๊ฐ€์žฅ ์ตœ์„ ์˜ ์„ ํƒ์„ ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งํ•œ๋‹ค. - ์ˆœ๊ฐ„์˜ ์„ ํƒ์€ ๊ทธ ๋‹น์‹œ์˜ ์ตœ์ ์˜ ์„ ํƒ์ด๋‹ค. ์ด๋Ÿฐ ์„ ํƒ๋“ค์ด ๋ชจ์—ฌ ์ตœ์ข…์ ์ธ ํ•ด๋‹ต์„ ์–ป๋Š”๋‹ค๊ณ  ํ•˜์—ฌ ์ตœ์ข… ํ•ด๋‹ต์ด ์ตœ์ ์ด๋ผ๋Š” ๋ณด์žฅ์€ ์—†๋‹ค. ๋”ฐ๋ผ์„œ, ํƒ์š•์  ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ•ด๋‹ต์„ ์–ป์€ ํ›„์— ์ด ํ•ด๋‹ต์ด ์ตœ์ ์ธ์ง€ ๊ฒ€์‚ฌํ•ด์•ผ ํ•œ๋‹ค. - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„ ์ ˆ์ฐจ 1๋‹จ๊ณ„) ์„ ์ •๊ณผ์ •(selection procedure) : ํ˜„์žฌ ์ƒํƒœ์—์„œ ๊ฐ€์žฅ ์ข‹์€ ์„ ํƒ์ด๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š” ํ•ด๋‹ต์„ ์ฐพ์•„์„œ ํ•ด๋‹ต๋ชจ์Œ(solution set)์— ํฌํ•จ์‹œํ‚จ๋‹ค. 2๋‹จ๊ณ„) ์ ์ •์„ฑ๊ฒ€์‚ฌ(feasibility test) : ์ƒˆ๋กœ ์–ป์€ ํ•ด๋‹ต๋ชจ์Œ์ด ์ ์ ˆํ•œ์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. 3๋‹จ๊ณ„) ํ•ด๋‹ต ๊ฒ€์‚ฌ(solution check) : ์ƒˆ๋กœ ์–ป์€ ํ•ด๋‹ต๋ชจ์Œ์ด ์ตœ์ ์˜ ํ•ด์ธ์ง€ ๊ฒฐ์ •ํ•œ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ด๋ถ„ ํƒ์ƒ‰(์ด์ง„ํƒ์ƒ‰) - BinarySearch

์ด๋ถ„ ํƒ์ƒ‰(์ด์ง„ํƒ์ƒ‰) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์€ ์ฐพ์„ ๋ฒ”์œ„๋ฅผ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ ์„œ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ฒ˜์Œ ์ค‘๊ฐ„์˜ ๊ฐ’์„ ์ž„์˜์˜ ๊ฐ’์œผ๋กœ ์„ ํƒํ•˜์—ฌ, ๊ทธ ๊ฐ’๊ณผ ํ‚ค๊ฐ’์˜ ํฌ๊ณ  ์ž‘์Œ์„ ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ฒ˜์Œ ์„ ํƒํ•œ ์ค‘๊ฐ„๊ฐ’์ด ๋งŒ์•ฝ ์ฐพ๋Š” ๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ์ตœ๋Œ“๊ฐ’์ด ๋˜๊ณ , ์ž‘์œผ๋ฉด ์ตœ์†Ÿ๊ฐ’์ด ๋œ๋‹ค. - ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์†ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. - ๋‹จ, ์ด๋ฏธ ์ •๋ ฌ๋œ ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. - ์ตœ์•…์˜ ๊ฒฝ์šฐ๋Š” ์ฐพ์œผ๋ ค๋Š” ํ‚ค๊ฐ’์ด ๋ฐฐ์—ด์— ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ์ด๋‹ค. - ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(logN) ์ด๋‹ค. ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ int BinarySearch(int arr[], int length, int key){ int first = 0; int last = length - 1; int mid = 0; while(first key){ // ์ค‘๊ฐ„๊ฐ’์ด ์ฐพ์œผ๋ ค..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋ถ„ํ• ์ •๋ณต - Divide and Conquer

๋ถ„ํ•  ์ •๋ณต๋ฒ•์ด๋ž€? ๋ฌธ์ œ์˜ ์‚ฌ๋ก€๋ฅผ 2๊ฐœ ์ด์ƒ์˜ ๋” ์ž‘์€ ์‚ฌ๋ก€๋กœ ๋‚˜๋ˆ„์–ด(divide) ๊ฐ ์ž‘์€ ์‚ฌ๋ก€์— ๋Œ€ํ•œ ํ•ด๋‹ต(conquer)์„ ์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉด ์ด๋“ค์˜ ํ•ด๋‹ต์„ ๊ฒฐํ•ฉ(combine)ํ•˜์—ฌ ์›๋ฌธ์ œ์˜ ํ•ด๋‹ต์„ ์–ป๋Š” ๋ฐฉ์‹. - ๋ฌธ์ œ๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ณผ์ •์€ ํ•ด๋‹ต์„ ์‰ฝ๊ฒŒ ์–ป์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ ์šฉํ•œ๋‹ค. - ํ•˜ํ–ฅ์‹(top-down) ์ ‘๊ทผ ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ถ„ํ• (Divide) : ํ•ด๊ฒฐํ•˜๊ธฐ ์‰ฝ๋„๋ก ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค. ์ •๋ณต(Conquer): ๋‚˜๋ˆˆ ์ž‘์€ ๋ฌธ์ œ๋ฅผ ๊ฐ๊ฐ ํ•ด๊ฒฐํ•œ๋‹ค. ํ†ตํ•ฉ(Combine): (ํ•„์š”ํ•˜๋‹ค๋ฉด) ํ•ด๊ฒฐ๋œ ํ•ด๋‹ต์„ ๋ชจ์€๋‹ค. - ๋ณดํ†ต ์žฌ๊ท€ ํ”„๋กœ์‹œ์ €๋กœ ๋จผ์ € ํ•ด๊ฒฐํ•œ ๋‹ค์Œ์— ๋ณด๋‹ค ํšจ์œจ์ ์ธ ๋ฐ˜๋ณต ํ”„๋กœ์‹œ์ €๊ฐ€ ์—†๋Š”์ง€ ๊ฒ€ํ† ํ•œ๋‹ค. - ๋Œ€ํ‘œ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด์ง„ ๊ฒ€์ƒ‰(BinarySearch) ํ•ฉ๋ณ‘ ์ •๋ ฌ(MergeSort) ..

[๋ฐฑ์ค€] ์ด๋ถ„ ํƒ์ƒ‰ - 1920. ์ˆ˜ ์ฐพ๊ธฐ

๋ฌธ์ œ N๊ฐœ์˜ ์ •์ˆ˜ A[1], A[2], …, A[N]์ด ์ฃผ์–ด์ ธ ์žˆ์„ ๋•Œ, ์ด ์•ˆ์— X๋ผ๋Š” ์ •์ˆ˜๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์•Œ์•„๋‚ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ž…๋ ฅ ์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ N(1≤N≤100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” N๊ฐœ์˜ ์ •์ˆ˜ A[1], A[2], …, A[N]์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” M(1≤M≤100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” M๊ฐœ์˜ ์ˆ˜๋“ค์ด ์ฃผ์–ด์ง€๋Š”๋ฐ, ์ด ์ˆ˜๋“ค์ด A์•ˆ์— ์กด์žฌํ•˜๋Š”์ง€ ์•Œ์•„๋‚ด๋ฉด ๋œ๋‹ค. ๋ชจ๋“  ์ •์ˆ˜๋“ค์˜ ๋ฒ”์œ„๋Š” int ๋กœ ํ•œ๋‹ค. ์ถœ๋ ฅ M๊ฐœ์˜ ์ค„์— ๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค. ์กด์žฌํ•˜๋ฉด 1์„, ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค. ์˜ˆ์ œ ์ž…๋ ฅ1 5 4 1 5 2 3 5 1 3 7 9 5 ์˜ˆ์ œ ์ถœ๋ ฅ1 1 1 0 0 1 ์ƒ๊ฐ ์ฒ˜์Œ์—๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ ํ•˜๋‚˜์”ฉ ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜๋ฅผ ๋ฐฐ์—ด์—์„œ ์žˆ๋Š”์ง€ ์ฒดํฌํ•ด์„œ ์žˆ์œผ๋ฉด true๋ฅผ ๋ฆฌํ„ดํ•˜..

[๋ฐฑ์ค€] ๋ฐฑํŠธ๋ž˜ํ‚น - 6603. ๋กœ๋˜

๋ฌธ์ œ ๋…์ผ ๋กœ๋˜๋Š” {1, 2, ..., 49}์—์„œ ์ˆ˜ 6๊ฐœ๋ฅผ ๊ณ ๋ฅธ๋‹ค. ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์„ ํƒํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ์ „๋žต์€ 49๊ฐ€์ง€ ์ˆ˜ ์ค‘ k(k>6)๊ฐœ์˜ ์ˆ˜๋ฅผ ๊ณจ๋ผ ์ง‘ํ•ฉ S๋ฅผ ๋งŒ๋“  ๋‹ค์Œ ๊ทธ ์ˆ˜๋งŒ ๊ฐ€์ง€๊ณ  ๋ฒˆํ˜ธ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, k=8, S={1,2,3,5,8,13,21,34}์ธ ๊ฒฝ์šฐ ์ด ์ง‘ํ•ฉ S์—์„œ ์ˆ˜๋ฅผ ๊ณ ๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ์ด 28๊ฐ€์ง€์ด๋‹ค. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ..., [3,5,8,13,21,34]) ์ง‘ํ•ฉ S์™€ k๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ˆ˜๋ฅผ ๊ณ ๋ฅด๋Š” ๋ชจ๋“  ๋ฐฉ๋ฒ•์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ž…๋ ฅ ์ž…๋ ฅ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ฒซ ..

[๋ฐฑ์ค€] ๋ธŒ๋ฃจํŠธํฌ์Šค - 2231. ๋ถ„ํ•ดํ•ฉ

๋ฌธ์ œ ์–ด๋–ค ์ž์—ฐ์ˆ˜ N์ด ์žˆ์„ ๋•Œ, ๊ทธ ์ž์—ฐ์ˆ˜ N์˜ ๋ถ„ํ•ดํ•ฉ์€ N๊ณผ N์„ ์ด๋ฃจ๋Š” ๊ฐ ์ž๋ฆฌ์ˆ˜์˜ ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค. ์–ด๋–ค ์ž์—ฐ์ˆ˜ M์˜ ๋ถ„ํ•ดํ•ฉ์ด N์ธ ๊ฒฝ์šฐ, M์„ N์˜ ์ƒ์„ฑ์ž๋ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 245์˜ ๋ถ„ํ•ดํ•ฉ์€ 256(=245+2+4+5)์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ 245๋Š” 256์˜ ์ƒ์„ฑ์ž๊ฐ€ ๋œ๋‹ค. ๋ฌผ๋ก , ์–ด๋–ค ์ž์—ฐ์ˆ˜์˜ ๊ฒฝ์šฐ์—๋Š” ์ƒ์„ฑ์ž๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ, ์ƒ์„ฑ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ์ž์—ฐ์ˆ˜๋„ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ž์—ฐ์ˆ˜ N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, N์˜ ๊ฐ€์žฅ ์ž‘์€ ์ƒ์„ฑ์ž๋ฅผ ๊ตฌํ•ด๋‚ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ž…๋ ฅ ์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ N(1 ≤ N ≤ 1,000,000)์ด ์ฃผ์–ด์ง„๋‹ค. ์ถœ๋ ฅ ์ฒซ์งธ ์ค„์— ๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ƒ์„ฑ์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” 0์„ ์ถœ๋ ฅํ•œ๋‹ค. ์˜ˆ์ œ ์ž…๋ ฅ1 216 ์˜ˆ์ œ ์ถœ๋ ฅ1 198 ์ƒ๊ฐ ์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ๋ดค์„๋•Œ ๋‚˜๋ˆ—์…ˆ์œผ๋กœ ํ’€๋ฆด ๊ฑฐ ๊ฐ™์•˜๋‹ค..

[๋ฐฑ์ค€] ํ,๋ฑ - 18258. ํ 2

๋ฌธ์ œ ์ด ๋ฌธ์ œ๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ์‚ฌ์šฉํ•˜๋Š” ํ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์‹œ๊ฐ„ ๋ณต์žก๋„ ์ƒ์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅธ์ง€ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ž…๋ ฅ์˜ ๋ฒ”์œ„๋ฅผ ์ œ์™ธํ•˜๋ฉด 10845 (ํ) ๋ฌธ์ œ์™€ ๊ฐ™๋‹ค. ์ •์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ํ๋ฅผ ๊ตฌํ˜„ํ•œ ๋‹ค์Œ, ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋ช…๋ น์€ ์ด ์—ฌ์„ฏ ๊ฐ€์ง€์ด๋‹ค. push X: ์ •์ˆ˜ X๋ฅผ ํ์— ๋„ฃ๋Š” ์—ฐ์‚ฐ์ด๋‹ค. pop: ํ์—์„œ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ๋นผ๊ณ , ๊ทธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ํ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค. size: ํ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. empty: ํ๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด 1, ์•„๋‹ˆ๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค. front: ํ์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ํ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค. back: ํ์˜ ๊ฐ€์žฅ ๋’ค์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅ..