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

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

(341)
[์ž๋ฃŒ๊ตฌ์กฐ] ํ•ด์‹œ ์ถฉ๋Œ Hash Collision ์ถœ์ฒ˜https://ryu-e.tistory.com/87 ํ•ด์‹œ(Hash)์™€ ํ•ด์‹œ ์ถฉ๋Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•1. ํ•ด์‹œ๋ž€? ๐Ÿ’ก ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ž„์˜์˜ ๊ธธ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์ •๋œ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋กœ ๋งคํ•‘ ํ•ด์‹œ ํ•จ์ˆ˜: ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ž„์˜์˜ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜ํ•™์  ์—ฐ์‚ฐ์„ryu-e.tistory.com https://www.geeksforgeeks.org/introduction-to-hashing-2/ Introduction to Hashing - GeeksforGeeksA Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming ..
[Java] Retrofit2์—์„œ Annotation์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์‚ดํ”ผ๊ธฐ ์ถœ์ฒ˜https://github.com/square/retrofit GitHub - square/retrofit: A type-safe HTTP client for Android and the JVMA type-safe HTTP client for Android and the JVM. Contribute to square/retrofit development by creating an account on GitHub.github.comChatGPT๋ชฉํ‘œ์ปค์Šคํ…€ Annotation ํ™œ์šฉ๋ฒ•์„ Retrofit์„ ํ†ตํ•ด์„œ ๋ฐฐ์šด๋‹ค. ์–ด๋–ป๊ฒŒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ์‚ดํ•€๋‹ค.์ƒ์„ธํ•œ Annotation ์‚ฌ์šฉ ๋ฐ ๊ตฌํ˜„ ์‚ฌํ•ญ๊นŒ์ง€๋Š”... ๐Ÿ™ˆ ๋ถ€๋‹ด์Šค๋Ÿฌ์›Œ์š”.Retrofit์—์„œ Annotation์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์˜ ์žฅ์ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒAn..
[Java] PriorityQueue ์ถœ์ฒ˜ChatGPT์ž๋ฐ” 8 ์†Œ์Šค์ฝ”๋“œPriorityQueue๋Š” ์ž๋ฐ”์˜ ํ(queue) ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค ์ค‘ ํ•˜๋‚˜๋กœ, ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์š”์†Œ๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ํ์ด๋‹ค. PriorityQueue๋Š” ํž™(Heap) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ์‚ฝ์ž…๋œ ์š”์†Œ๋“ค์„ ํŠน์ • ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ •๋ ฌํ•˜์—ฌ, ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ์š”์†Œ๊ฐ€ ๋จผ์ € ์ฒ˜๋ฆฌ๋˜๋„๋ก ํ•œ๋‹ค.๊ด€๋ จ ๊ธ€ -> [Java] Queue ์ธํ„ฐํŽ˜์ด์Šค๊ด€๋ จ ๊ธ€ -> [์ž๋ฃŒ ๊ตฌ์กฐ][Java] ํž™ Heap 1. PriorityQueue์˜ ์ฃผ์š” ํŠน์ง•์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜PriorityQueue๋Š” ์ผ๋ฐ˜์ ์ธ ํ์™€ ๋‹ฌ๋ฆฌ, ์š”์†Œ๋“ค์ด ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ •๋ ฌ๋œ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋ฉฐ, Comparator๋ฅผ ์ œ๊ณตํ•˜๋ฉด ์‚ฌ์šฉ์ž ์ •์˜ ์šฐ์„ ์ˆœ์œ„๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.ํž™(Heap)  ์ž๋ฃŒ๊ตฌ์กฐ๋‚ด๋ถ€์ ์œผ๋กœ..
[์ž๋ฃŒ ๊ตฌ์กฐ]์ด์ง„ ํž™ Binary Heap ์ถœ์ฒ˜ ChatGPT์ด์ง„ ํž™ (Binary Heap)์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์˜ ํ•œ ํ˜•ํƒœ๋กœ, ํž™ ํŠน์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ด์ง„ ํž™์€ ์ฃผ๋กœ ์ตœ์†Œ ํž™(Min Heap)๊ณผ ์ตœ๋Œ€ ํž™(Max Heap) ๋‘ ๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋‚˜๋‰œ๋‹ค. ์ตœ์†Œ ํž™ Min Heap๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ํ•ญ์ƒ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. ๋”ฐ๋ผ์„œ ๋ฃจํŠธ ๋…ธ๋“œ์—๋Š” ํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด ์œ„์น˜ํ•œ๋‹ค.์ตœ๋Œ€ ํž™ Max Heap๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ํ•ญ์ƒ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. ๋”ฐ๋ผ์„œ ๋ฃจํŠธ ๋…ธ๋“œ์—๋Š” ํŠธ๋ฆฌ์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ์œ„์น˜ํ•œ๋‹ค. 1. ์ด์ง„ ํž™์˜ ํŠน์„ฑ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ Complete Binary Tree์ด์ง„ ํž™์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ๋ชจ๋“  ๋ ˆ๋ฒจ์€ ๊ฐ€๋“ ์ฐจ ์žˆ์œผ๋ฉฐ, ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์€ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๋…ธ๋“œ๊ฐ€ ์ฑ„์›Œ์ ธ์•ผ ํ•œ๋‹ค.ํž™ ์†์„ฑ ..
[์ž๋ฃŒ ๊ตฌ์กฐ][Java] ํž™ Heap ์ถœ์ฒ˜ChatGPTํž™(Heap) ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(Complete Binary Tree)์˜ ํ•œ ํ˜•ํƒœ๋กœ, ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํšจ์œจ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ํž™์€ ์š”์†Œ๋“ค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ตœ๋Œ€๊ฐ’์ด๋‚˜ ์ตœ์†Œ๊ฐ’์„ ์ฐพ๊ณ , ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ ์ž‘์—…์„ ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค.๊ด€๋ จ ๊ธ€ -> [์ž๋ฃŒ ๊ตฌ์กฐ] ์ด์ง„ ํŠธ๋ฆฌ Binary Tree 1. ํž™์˜ ์ฃผ์š” ํŠน์ง•์™„์ „ ์ด์ง„ ํŠธ๋ฆฌํž™์€ ๋ชจ๋“  ๋ ˆ๋ฒจ์ด ์™„์ „ํžˆ ์ฑ„์›Œ์ ธ ์žˆ์œผ๋ฉฐ, ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ๋„ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฑ„์›Œ์ ธ ์žˆ๋Š” ์ด์ง„ ํŠธ๋ฆฌ์ด๋‹ค. ์ด ํŠน์„ฑ ๋•๋ถ„์— ํž™์€ ๋ฐฐ์—ด(Array)๋กœ ํšจ์œจ์ ์œผ๋กœ ๊ตฌํ˜„๋  ์ˆ˜ ์žˆ๋‹ค.ํž™ ์†์„ฑ Heap Property์ตœ๋Œ€ ํž™ Max-Heap๋ถ€๋ชจ ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ตฌ์กฐ์ด๋‹ค. ๋”ฐ๋ผ์„œ ..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์•ˆ์ •์ ์ธ ์ •๋ ฌ Stable Sorting ์ถœ์ฒ˜ChatGPT์•ˆ์ •์ ์ธ ์ •๋ ฌ์ด๋ž€ ์ •๋ ฌ ์ „์— ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง„ ์š”์†Œ๋“ค์˜ ์ƒ๋Œ€์ ์ธ ์ˆœ์„œ๊ฐ€ ์ •๋ ฌ ํ›„์—๋„ ์œ ์ง€๋˜๋Š” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งํ•œ๋‹ค. ์ฆ‰, ๊ฐ’์ด ๊ฐ™์€ ๋‘ ์š”์†Œ๊ฐ€ ์žˆ์„ ๋•Œ, ์ •๋ ฌ ์ „์—์„œ์˜ ์ˆœ์„œ๊ฐ€ ์ •๋ ฌ ํ›„์—๋„ ๋™์ผํ•˜๋‹ค๋ฉด ๊ทธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์•ˆ์ •์ ์ด๋‹ค.์˜ˆ์‹œ๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort), ๋ฒ„๋ธ” ์ •๋ ฌ(Bubble Sort), ์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort)์€ ์•ˆ์ •์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.๋น„์•ˆ์ •์ ์ธ ์ •๋ ฌํ€ต ์ •๋ ฌ(Quick Sort), ํž™ ์ •๋ ฌ(Heap Sort) ๋“ฑ์€ ๋น„์•ˆ์ •์ ์ธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ์ •๋ ฌ๋œ ํ›„ ๋™์ผํ•œ ๊ฐ’์˜ ์š”์†Œ๋“ค ๊ฐ„์˜ ์ˆœ์„œ๊ฐ€ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋‹ค. -> ์ •๋ ฌํ•˜๋ฉด์„œ ๊ฐ’์ด ๊ฐ™์€ ์š”์†Œ๋“ค์˜ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Œ€  ์•ˆ์ •์ ์ธ ์ •๋ ฌ์˜ ํŠน์ง•๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ ์œ ์ง€๋™์ผํ•œ ๊ฐ’์ด ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์žˆ์„ ๋•Œ, ๊ทธ ๊ฐ’๋“ค ๊ฐ„์˜ ์ƒ๋Œ€..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ œ์ž๋ฆฌ ์ •๋ ฌ In-Place Sorting ์ถœ์ฒ˜ChatGPT์ œ์ž๋ฆฌ ์ •๋ ฌ์ด๋ž€ ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ (์ƒ์ˆ˜ ๊ณต๊ฐ„๋งŒ ์‚ฌ์šฉ) ์›๋ž˜ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด ๋˜๋Š” ๋ฆฌ์ŠคํŠธ ๋‚ด์—์„œ ์š”์†Œ๋“ค์„ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งํ•œ๋‹ค. ์ฆ‰, ์ž…๋ ฅ ์ž๋ฃŒ๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ํฐ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ , ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ๊ตํ™˜ํ•˜๊ฑฐ๋‚˜ ์ด๋™์‹œํ‚ค๋ฉด์„œ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.์˜ˆ์‹œ๋ฒ„๋ธ” ์ •๋ ฌ(Bubble Sort), ์„ ํƒ ์ •๋ ฌ(Selection Sort), ์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort) ๋“ฑ์€ ์ œ์ž๋ฆฌ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.๋น„์ œ์ž๋ฆฌ ์ •๋ ฌ Out-Of-Place Sort๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort)๊ณผ ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋น„์ œ์ž๋ฆฌ ์ •๋ ฌ๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค. ๋ณ‘ํ•ฉ ์ •๋ ฌ์€ ์ •๋ ฌ์„ ์œ„ํ•ด ์ถ”๊ฐ€์ ์ธ ๋ฐฐ์—ด ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค. ์ œ์ž๋ฆฌ ์ •๋ ฌ์˜ ํŠน์ง•์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ์ ์Œ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒ์ˆ˜ ๊ณต๊ฐ„(O(1))๋งŒ ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉํ•œ๋‹ค.๋ฐ..
[Java] Queue ์ธํ„ฐํŽ˜์ด์Šค ์ถœ์ฒ˜ChatGPTQueue ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ž๋ฐ” ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ FIFO(First-In-First-Out) ์›์น™์— ๋”ฐ๋ผ ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. ํ๊ฐ€ ๋จผ์ € ์ถ”๊ฐ€๋œ ์š”์†Œ๊ฐ€ ๋จผ์ € ์ œ๊ฑฐ๋˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅด๋ฉฐ, ์ฃผ๋กœ ์ž‘์—… ๊ด€๋ฆฌ๋‚˜ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ์™€ ๊ฐ™์€ ๋Œ€๊ธฐ์—ด์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. Queue ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ปฌ๋ ‰์…˜(Collection) ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜๋ฉฐ, ํ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ํŠนํ™”๋œ ๋ฉ”์†Œ๋“œ๋“ค์„ ์ •์˜ํ•œ๋‹ค. 1. Queue ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ฃผ์š” ํŠน์ง•FIFO ์ˆœ์„œQueue ๋Š” FIFO(First-In-First-Out) ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ์ฆ‰, ํ์— ๋จผ์ € ์‚ฝ์ž…๋œ ์š”์†Œ๊ฐ€ ๋จผ์ € ์ฒ˜๋ฆฌ๋˜๊ณ  ์ œ๊ฑฐ๋œ๋‹ค.null ํ—ˆ์šฉ ์•ˆ ํ•จ๋Œ€๋ถ€๋ถ„์˜ ํ ๊ตฌํ˜„์ฒด๋Š” null ๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋Š” null์ด ํ์˜ ๋์„ ๋‚˜ํƒ€๋‚ด๊ฑฐ๋‚˜ ํŠน..