๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜ [Algorithm] - ๊ณ„์ˆ˜ ์ •๋ ฌ Counting Sort (7) (C, Python) ๊ณ„์ˆ˜ ์ •๋ ฌ ์ด๋ฒˆ์—๋Š” ๊ณ„์ˆ˜ ์ •๋ ฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ๊ณ„์ˆ˜ ์ •๋ ฌ์ด๋ž€ ๋‹จ์ˆœํ•˜๊ฒŒ 'ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ธ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜'์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ณ„์ˆ˜ ์ •๋ ฌ์€ '๋ฒ”์œ„์กฐ๊ฑด'์ด ์žˆ๋Š” ๊ฒฝ์šฐ์— ํ•œํ•ด์„œ ๊ต‰์žฅํžˆ ๋น ๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์„ ํƒ ์ •๋ ฌ, ๋ฒ„๋ธ” ์ •๋ ฌ, ์‚ฝ์ž… ์ •๋ ฌ, ํ€ต ์ •๋ ฌ, ๋ณ‘ํ•ฉ ์ •๋ ฌ, ํž™ ์ •๋ ฌ์„ ๋ฐฐ์› ๋Š”๋ฐ ์ง€๊ธˆ ๊นŒ์ง€ ๋ฐฐ์šด ์ •๋ ฌ ์ค‘ ๊ฐ€์žฅ ๋น ๋ฅธ ์ •๋ ฌ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฅด๋ผ๋ฉด ์‹œ๊ฐ„ ๋ณต์žก๋„ O(N*log N)์„ ๊ฐ€์ง€๋Š” ํ€ต ์ •๋ ฌ, ๋ณ‘ํ•ฉ ์ •๋ ฌ, ํž™ ์ •๋ ฌ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ณ ๋ฅผ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ณด๋‹ค ๋” ๋น ๋ฅด๊ฒŒ ์ •๋ ฌํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ๋ ๊นŒ? ๊ณ„์ˆ˜ ์ •๋ ฌ์€ ๋ฒ”์œ„๊ฐ€ ์ฃผ์–ด์ ธ์žˆ๋‹ค๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„ O(N)์˜ ์†๋„๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐฏ์ˆ˜๋ฅผ ์„ธ๊ณ , ๊ฐฏ์ˆ˜๋งŒํผ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด ์ •๋ ฌ์ด ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ต‰์žฅํžˆ ๋น ๋ฅด๋‹ค. ๋‹ค์Œ์˜ 5 ์ดํ•˜ ์ž์—ฐ์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜์„ธ..
์•Œ๊ณ ๋ฆฌ์ฆ˜ [Algorithm] - ํž™ ์ •๋ ฌ Heap Sort(6) (C,Python) ํž™์ •๋ ฌ ์ด๋ฒˆ์—๋Š” ํž™ ์ •๋ ฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ํž™์ •๋ ฌ์ด๋ž€ ํž™ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•˜๋Š” ์ •๋ ฌ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„  ๋จผ์ € ํž™(Heap)๊ตฌ์กฐ๋ฅผ ์•Œ์•„์•ผํ•˜๊ณ , ํž™์„ ์•Œ๊ธฐ ์ด์ „์—๋Š” ์ด์ง„ ํŠธ๋ฆฌ(Binary Tree)์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•œ๋‹ค. ์ด์ง„ ํŠธ๋ฆฌ(binary tree)๋Š” ๊ฐ๊ฐ์˜ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ ๋‘ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ๊ฐ ์™ผ์ชฝ์ž์‹ ๋…ธํŠธ์™€ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ ๋ผ๊ณ  ํ•œ๋‹ค. (์ถœ์ฒ˜ : https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%A7%84_%ED%8A%B8%EB%A6%AC) ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฃจํŠธ(Root) ๋…ธ๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์ž์‹๋…ธ๋“œ๊ฐ€ ์™ผ์ชฝ ์ž์‹๋…ธ๋“œ, ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋กœ ์ฐจ๊ทผ์ฐจ๊ทผ ๋“ค์–ด๊ฐ€๋Š” ๊ตฌ์กฐ์˜ ์ด์ง„ ํŠธ๋ฆฌ์ด๋‹ค. ์ฆ‰ ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ๋Š” ์ด์ง„ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ๊ฐ€ ์ค‘..
์•Œ๊ณ ๋ฆฌ์ฆ˜ [Algorithm] - ๋ณ‘ํ•ฉ ์ •๋ ฌ Merge Sort(5) (C,Python) ๋ณ‘ํ•ฉ์ •๋ ฌ ์ด๋ฒˆ์—๋Š” ๋ณ‘ํ•ฉ ์ •๋ ฌ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ๋ณ‘ํ•ฉ์ •๋ ฌ๋„ ํ€ต์ •๋ ฌ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋Œ€ํ‘œ์ ์ธ '๋ถ„ํ• ์ •๋ณต' ๋ฐฉ๋ฒ•์„ ์ฑ„ํƒํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋”ฐ๋ผ์„œ ๊ฒฐ๊ณผ์ ์œผ๋กœ ํ€ต ์ •๋ ฌ๊ณผ ๋™์ผํ•˜๊ฒŒ O(N * logN)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค. ๋‹ค๋งŒ ํ€ต ์ •๋ ฌ์€ ์ตœ์•…์˜ ๊ฒฝ์šฐ O(N^2)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€์ง€๋งŒ, ๋ณ‘ํ•ฉ์ •๋ ฌ์€ ์ •ํ™•ํžˆ ๋ฐ˜์ ˆ์”ฉ ๋‚˜๋ˆˆ๋‹ค๋Š” ์ ์—์„œ ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ O(N*logN)์„ ๋ณด์žฅํ•œ๋‹ค. ๋‹ค์Œ์˜ ์ˆซ์ž๋“ค์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”. 7 6 5 8 3 5 9 1 ๋ณ‘ํ•ฉ์ •๋ ฌ์€ ํ•˜๋‚˜์˜ ํฐ ๋ฌธ์ œ๋ฅผ ๋‘๊ฐœ์˜ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋ถ„ํ• ํ•œ ๋’ค์— ๊ฐ์ž ๊ณ„์‚ฐํ•˜๊ณ  ๋‚˜์ค‘์— ํ•ฉ์น˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฑ„ํƒํ•œ๋‹ค. ์ฆ‰ ๊ธฐ๋ณธ ์•„์ด๋””์–ด๋Š” ์ผ๋‹จ ์ •ํ™•ํžˆ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๋‚˜์ค‘์— ์ •๋ ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ€ต ์ •๋ ฌ๊ณผ ๋‹ค๋ฅด๊ฒŒ ํ”ผ๋ฒ— ๊ฐ’์ด ์—†๊ณ  ํ•ญ์ƒ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๊ณ , ๋•Œ๋ฌธ์— ๋‹จ..
์•Œ๊ณ ๋ฆฌ์ฆ˜ [Algorithm] - ๊ธฐ์ดˆ ์ •๋ ฌ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ (5) (C, Python) import sys a = int(sys.stdin.readline()) data = [sys.stdin.readline().strip() for i in range(a)] data_int = list(map(int,data)) data_int.sort() for j in range(a): print(data_int[j]) ๊ธฐ์ดˆ ์ •๋ ฌ ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ ์ง€๊ธˆ๊นŒ์ง€ ์„ ํƒ์ •๋ ฌ, ๋ฒ„๋ธ”์ •๋ ฌ, ์‚ฝ์ž…์ •๋ ฌ, ํ€ต์ •๋ ฌ์„ ๋ฐฐ์› ๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€์˜ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์ž! 1. ์„ธ ์ˆซ์ž ์ •๋ ฌ : https://www.acmicpc.net/problem/2752 2752๋ฒˆ: ์„ธ์ˆ˜์ •๋ ฌ ์ˆซ์ž ์„ธ ๊ฐœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด ์ˆซ์ž๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 1,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ์ด ์ˆซ์ž๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด๋‹ค. www.acmicpc...