[์ž๋ฃŒ๊ตฌ์กฐ] ์šฐ์„ ์ˆœ์œ„ ํ remove, poll ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด
ยท
Algorithm/Data Structure
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๊ฐ€ ์•Œ๊ฒŒ๋œ ์‚ฌ์‹ค์„ ๊ธฐ๋กํ•ด๋ดค๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ poll๊ณผ remove ๋ฉ”์„œ๋“œ๋Š” poll() : ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๊ฐ’ ๋ฐ˜ํ™˜ ํ›„ ์ œ๊ฑฐ, ํ๊ฐ€ ๋น„์–ด์žˆ์„๋•Œ๋Š” null์„ ๋ฆฌํ„ด remove() : ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๊ฐ’ ๋ฐ˜ํ™˜ ํ›„ ์ œ๊ฑฐ, ๋น„์–ด์žˆ์œผ๋ฉด ์˜ˆ์™ธ(NoSuchElementException)๋ฐœ์ƒ ๋กœ ์•Œ๊ณ ์žˆ๋‹ค. ํ๊ฐ€ ๋น„์–ด์žˆ์„ ๋•Œ poll()์„ ๊ฐ์ฒด๋กœ ์‚ฌ์šฉํ•˜๋ฉด NPE(Null Pointer Exception)์ด ๋ฐœ์ƒํ•œ๋‹ค. => ๊ฐ์ฒด๋กœ ์‚ฌ์šฉํ•˜์ง€์•Š๊ณ  ๊ทธ๋ƒฅ ๋ฉ”์„œ๋“œ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ex) a.poll(); NPE๋Š” ๋ฐœ์ƒX remove๋ฉ”์„œ๋“œ๋Š” remove()์™€ remove(Object o)๊ฐ€ ์žˆ๋Š”๋ฐ , remove()๋Š” AbstractQueue ์ถ”์ƒ ํด๋ž˜์Šค์˜ remove ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ..
[Java] int ํ˜•(Primitive type)๋ฐฐ์—ด์„ List๋กœ + ๋‚ด๋ฆผ์ฐจ์ˆœ( Stream ์‚ฌ์šฉ)
ยท
Algorithm/Data Structure
๋ฐฐ์—ด์˜ ์›์†Œ๊ฐ€ int์™€ ๊ฐ™์€ primitive type(์›์‹œ ํƒ€์ž…)์ธ ๊ฒฝ์šฐ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. => Arrays.sort(arr๋ช…, reverseOrder()) => ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ๋ถˆ๊ฐ€๋Šฅ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋ฉ”์†Œ๋“œ Arrays.sort(arr๋ช…); ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ์›์‹œ ํƒ€์ž… ๋ฐฐ์—ด์„ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ ํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€์ง€๋งŒ(์›์‹œ ํƒ€์ž… ๋ฐฐ์—ด์„ ์ฐธ์กฐ ํƒ€์ž… ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜), ์—ฌ๊ธฐ์„œ๋Š” List๋กœ ๋ณ€ํ™˜ ํ›„ ๋‚ด๋ฆผ์ฐจ์ˆœ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Java 8 ์ดํ›„๋ถ€ํ„ฐ๋Š” Stream์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. intํ˜•(์›์‹œ ํƒ€์ž…) ๋ฐฐ์—ด์„ Integer(์ฐธ์กฐ ํƒ€์ž…)ํ˜• List๋กœ ๋ณ€ํ™˜์ฝ”๋“œ List ๋ฆฌ์ŠคํŠธ๋ช… = Arrays.stream(intํ˜• ๋ฐฐ์—ด๋ช…) .boxed() .collect(Co..
[Java] ์ž๋ฐ”์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…(primitive type, reference type)
ยท
Algorithm/Data Structure
์ž๋ฐ”์˜ ๋ณ€์ˆ˜์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ primitive type๊ณผ reference type์œผ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, primitive type(์›์‹œ ํƒ€์ž…)๊ณผ reference type(์ฐธ์กฐ ํƒ€์ž…)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ์›์‹œ ํƒ€์ž…(primitive type) primitive type(์›์‹œ ํƒ€์ž…์€) ์–ธ์–ด์—์„œ ์‚ฌ์ „ ์ •์˜ ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ, ์‰ฝ๊ฒŒ ๋งํ•ด, ์ •์ˆ˜, ์‹ค์ˆ˜, ๋ฌธ์ž, ๋…ผ๋ฆฌ ๋ฆฌํ„ฐ๋Ÿด๋“ฑ์˜ ์‹ค์ œ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ํƒ€์ž…์ด๋‹ค. ์ฐธ์กฐ ํƒ€์ž…(reference type) reference type(์ฐธ์กฐ ํƒ€์ž…)์€ ๊ฐ์ฒด(Object)์˜ ๋ฒˆ์ง€๋ฅผ ์ฐธ์กฐ(์ฃผ์†Œ๋ฅผ ์ €์žฅ!!)ํ•˜๋Š” ํƒ€์ž…์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋ฒˆ์ง€ ๊ฐ’์„ ํ†ตํ•ด ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํƒ€์ž…์ด๋‹ค. (call by reference) ์›์‹œ ํƒ€์ž…์„ ์ œ์™ธํ•œ ํƒ€์ž…๋“ค(๋ฌธ์ž์—ด, ๋ฐฐ์—ด, ์—ด๊ฑฐ, ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค..
[Python] ํž™ ์ž๋ฃŒ๊ตฌ์กฐ / ํž™ํ(heapq)
ยท
Algorithm/Data Structure
ํŒŒ์ด์ฌ ํž™ ์ž๋ฃŒ๊ตฌ์กฐ ํŒŒ์ด์ฌ heapq ๋ชจ๋“ˆ์€ heapq (priority queue) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ œ๊ณตํ•œ๋‹ค. ๋ชจ๋“  ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ๊ทธ์˜ ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ๊ฐ’์ด ์ž‘๊ฑฐ๋‚˜ ํฐ ์ด์ง„ํŠธ๋ฆฌ(binary tree) ๊ตฌ์กฐ์ธ๋ฐ, ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ์ธ๋ฑ์Šค 0์—์„œ ์‹œ์ž‘ํ•ด k๋ฒˆ์งธ ์›์†Œ๊ฐ€ ํ•ญ์ƒ ์ž์‹ ์›์†Œ๋“ค(2k+1, 2k+2) ๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ตœ์†Œ ํž™์˜ ํ˜•ํƒœ๋กœ ์ •๋ ฌ๋œ๋‹ค. heapq๋Š” ๋‚ด์žฅ ๋ชจ๋“ˆ๋กœ ๋ณ„๋„์˜ ์„ค์น˜ ์ž‘์—… ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํž™ ํ•จ์ˆ˜ ํ™œ์šฉํ•˜๊ธฐ heapq.heappush(heap, item) : item์„ heap์— ์ถ”๊ฐ€ heapq.heappop(heap) : heap์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์›์†Œ๋ฅผ pop & ๋ฆฌํ„ด. ๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ IndexError๊ฐ€ ํ˜ธ์ถœ๋จ. heapq.heapify(x) : ๋ฆฌ์ŠคํŠธ x๋ฅผ ์ฆ‰๊ฐ์ ์œผ๋กœ heap์œผ๋กœ ๋ณ€..
Python Deque(Double-Ended Queue) + Stack, Queue ๊ฐ„๋‹จ๊ฐœ๋…
ยท
Algorithm/Data Structure
deque() ๋Š” ์Šคํƒ๊ณผ ํ์˜ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ๊ฐ€์ง„ ๊ฐ์ฒด๋กœ ์ถœ์ž…๊ตฌ๋ฅผ ์–‘์ชฝ์— ๊ฐ€์ง€๊ณ  ์žˆ์Œ. ๋ฉ”์„œ๋“œ์— ๋”ฐ๋ผ ์Šคํƒ์ฒ˜๋Ÿผ ์จ๋„๋˜๊ณ , ํ์ฒ˜๋Ÿผ ์จ๋„๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ž ๊น ์Šคํƒ๊ณผ ํ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด์ž. 1. ์Šคํƒ ๊ตฌํ˜„ : append(), pop() ์Šคํƒ(stack)์ด๋ž€ ์Œ“์•„ ์˜ฌ๋ฆฐ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธ '๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์‚ฝ์ž…๋œ ์ž๋ฃŒ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์‚ญ์ œ๋œ๋‹ค'๋ผ๋Š” ๊ตฌ์กฐ์  ํŠน์ง•์„ ๊ฐ€์ง(ํ›„์ž…์„ ์ถœ(LIFO, Last-In-First-Out) ๊ตฌ์กฐ) top์œผ๋กœ ์ •ํ•œ ๊ณณ์„ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผ๊ฐ€๋Šฅ(์‚ฝ์ž…, ์‚ญ์ œ ๋ชจ๋‘) ์ž…๋ ฅ์‹œ์—๋Š” append() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๊ณ , ์ถœ๋ ฅ์‹œ์—๋Š” pop()์„ ์ด์šฉ 2. ํ ๊ตฌํ˜„ : appendleft(), pop(), append(), popleft() Queue์˜ ์‚ฌ์ „์  ์˜๋ฏธ๋Š” ์ค„์„ ์„œ์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์„ ์˜๋ฏธ ๋”ฐ๋ผ์„œ ์€ํ–‰์—..