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

๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜

(140)
[์ฝ”๋“œํŠธ๋ฆฌ] Hash Set SW์ค‘์‹ฌ๋Œ€ํ•™ ์‚ฌ์—…๋‹จ์—์„œ CodeTree์™€ ํ•จ๊ป˜ ์‹ค์‹œํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ ์บ ํ”„์— ์ฐธ์—ฌํ•˜์—ฌ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. * ์ฐธ๊ณ  : python๊ณผ c++, java ๋“ฑ ์–ธ์–ด๋ณ„๋กœ ์„ค๋ช…์ด ๋‹ค๋ฅธ ๋ถ€๋ถ„ ์กด์žฌ! ํ•„์ž๋Š” c++ ์‚ฌ์šฉ. unordered_set STL C++์—์„œ๋Š” unordered_set์ด๋ผ๋Š” STL์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. unordered_set์€ HashSet ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์œผ๋ฉฐ, ์ด HashSet์ด ๋ฐ”๋กœ ํ•ด์‹ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋“ค์„ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ํ•จ์ˆ˜์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(1)์ž…๋‹ˆ๋‹ค. unordered_set์€ set๋ณด๋‹ค ์†๋„๊ฐ€ ๋น ๋ฅด์ง€๋งŒ, ๊ฐ’์˜ ์กด์žฌ ์—ฌ๋ถ€์—๋งŒ ๊ด€์‹ฌ์ด ์žˆ์ง€ ๊ทธ ์ˆœ์„œ์—๋Š” ์ „ํ˜€ ๊ด€์‹ฌ์ด ์—†๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. #include ํ—ค๋”์™€, unordered_set name; ํ˜•ํƒœ์˜..
[์ฝ”๋“œํŠธ๋ฆฌ] TreeMap ์—ฐ์Šต๋ฌธ์ œ ๋ฌธ์ œ n๊ฐœ์˜ ๋ช…๋ น์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด๋ณด์„ธ์š”. ๋ช…๋ น์˜ ์ข…๋ฅ˜๋Š” ํฌ๊ฒŒ 4๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค. add k v : (k, v) ์Œ์„ treemap์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. key๊ฐ€ k, value๊ฐ€ v๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ๋งŒ์•ฝ ๋™์ผํ•œ k๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๋ฉด, v๋กœ ๋ฎ์–ด์”๋‹ˆ๋‹ค. remove k : key๊ฐ€ k์ธ ์Œ์„ ์ฐพ์•„ treemap์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ์ž…๋ ฅ์€ ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. find k : key๊ฐ€ k์ธ ์Œ์ด treemap์— ์žˆ๋Š”์ง€๋ฅผ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค. ์žˆ๋‹ค๋ฉด ํ•ด๋‹นํ•˜๋Š” value๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ์—†๋‹ค๋ฉด None์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. print_list : treemap์— ์žˆ๋Š” ์Œ๋“ค์„ key ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜์—ฌ ๊ฐ value ๊ฐ’๋“ค๋งŒ ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ treemap์ด ๋น„์–ด์žˆ๋‹ค..
[์ฝ”๋“œํŠธ๋ฆฌ] Tree Map SW์ค‘์‹ฌ๋Œ€ํ•™ ์‚ฌ์—…๋‹จ์—์„œ CodeTree์™€ ํ•จ๊ป˜ ์‹ค์‹œํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ ์บ ํ”„์— ์ฐธ์—ฌํ•˜์—ฌ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. * ์ฐธ๊ณ  : python๊ณผ c++, java ๋“ฑ ์–ธ์–ด๋ณ„๋กœ ์„ค๋ช…์ด ๋‹ค๋ฅธ ๋ถ€๋ถ„ ์กด์žฌ! ํ•„์ž๋Š” c++ ์‚ฌ์šฉ. map STL C++์—์„œ๋Š” map์ด๋ผ๋Š” STL์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. map์€ TreeMap ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์œผ๋ฉฐ, TreeMap์˜ ๊ฒฝ์šฐ ๊ท ํ˜• ์žกํžŒ ์ด์ง„ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋“ค์„ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์ž…๋‹ˆ๋‹ค. TreeMap์€ ๊ฐ ๋…ธ๋“œ์— (key, value) ์Œ ํ˜•ํƒœ๋กœ ๋“ค์–ด๊ฐ€ ์žˆ์–ด, key๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋…ธ๋“œ์˜ ์œ„์น˜๊ฐ€ ๊ฒฐ์ •๋˜๊ณ  ๊ฐ key์— ๋Œ€ํ•œ value๊ฐ’์„ ์ €์žฅํ•˜๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ TreeMap์—์„œ ๋ชจ๋“  ํ•จ์ˆ˜์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์ „๋ถ€ O(logN)์ž…๋‹ˆ๋‹ค. #include ํ—ค๋”์™€, map name;..
[์ฝ”๋“œํŠธ๋ฆฌ] HashMap ์—ฐ์Šต๋ฌธ์ œ Hash Map ์‚ฌ์šฉ ์˜ˆ์‹œ, ํ•ด์‹œ๋งต, code tree, cpp, ์ž๋ฃŒ๊ตฌ์กฐ, ๋ฌธ์ œ, ์˜ˆ์ œ ๋ฌธ์ œ n๊ฐœ์˜ ๋ช…๋ น์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด๋ณด์„ธ์š”. ๋ช…๋ น์˜ ์ข…๋ฅ˜๋Š” ํฌ๊ฒŒ 3๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค. add k v : (k, v) ์Œ์„ hashmap์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. key๊ฐ€ k, value๊ฐ€ v๋ผ๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ๋งŒ์•ฝ ๋™์ผํ•œ k๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๋ฉด, v๋กœ ๋ฎ์–ด์”๋‹ˆ๋‹ค. remove k : key๊ฐ€ k์ธ ์Œ์„ ์ฐพ์•„ hashmap์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ์ž…๋ ฅ์€ ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. find k : key๊ฐ€ k์ธ ์Œ์ด hashmap์— ์žˆ๋Š”์ง€๋ฅผ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค. ์žˆ๋‹ค๋ฉด ํ•ด๋‹นํ•˜๋Š” value๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ์—†๋‹ค๋ฉด None์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ ํ˜•์‹ ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” n์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„ ๋ถ€ํ„ฐ๋Š” n๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ๊ฐ ๋ช…..
[์ฝ”๋“œํŠธ๋ฆฌ] Hash Map SW์ค‘์‹ฌ๋Œ€ํ•™ ์‚ฌ์—…๋‹จ์—์„œ CodeTree์™€ ํ•จ๊ป˜ ์‹ค์‹œํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ ์บ ํ”„์— ์ฐธ์—ฌํ•˜์—ฌ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. * ์ฐธ๊ณ  : python๊ณผ c++, java ๋“ฑ ์–ธ์–ด๋ณ„๋กœ ์„ค๋ช…์ด ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค! ํ•„์ž๋Š” c++์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. unordered_map STL C++์—์„œ๋Š” unordered_map์ด๋ผ๋Š” STL์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. unordered_map์€ HashMap ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์œผ๋ฉฐ, HashMap์˜ ๊ฒฝ์šฐ ํ•ด์‹ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋“ค์„ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์ž…๋‹ˆ๋‹ค. HashMap์€ (key, value) ์Œ ํ˜•ํƒœ๋กœ ๋“ค์–ด๊ฐ€ ์žˆ์–ด, key์™€ ๊ทธ์— ๋”ฐ๋ฅธ value ๊ฐ’์„ ๋™์‹œ์— ์ €์žฅํ•˜๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ HashMap์˜ ์‚ฝ์ž…, ์‚ญ์ œ, ํƒ์ƒ‰ ๋“ฑ ๋ชจ๋“  ํ•จ์ˆ˜์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์ „๋ถ€ O(1)์ž…๋‹ˆ๋‹ค. u..
[์ฝ”๋“œํŠธ๋ฆฌ] ๊ณต๊ฐ„๋ณต์žก๋„ SW์ค‘์‹ฌ๋Œ€ํ•™ ์‚ฌ์—…๋‹จ์—์„œ CodeTree์™€ ํ•จ๊ป˜ ์‹ค์‹œํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ ์บ ํ”„์— ์ฐธ์—ฌํ•˜์—ฌ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ์†Œ์š”์‹œ๊ฐ„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ์ปดํ“จํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•œ์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๊ณต๊ฐ„๋ณต์žก๋„๋„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฐ„๋ณต์žก๋„๋„ ์‹œ๊ฐ„๋ณต์žก๋„์™€ ๋™์ผํ•˜๊ฒŒ ์ ๊ทผ์  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. function example(n) set arr = [n][n] for i = 0 ... i < n for j = 0 ... j < n arr[i][j] = 1 ๊ณต๊ฐ„๋ณต์žก๋„ = '์ด ์ฝ”๋“œ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์–ผ๋งˆ๋‚˜ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์„๊นŒ?' ์œ„ ์ฝ”๋“œ์—์„œ set arr = [n][n] ์ด์™ธ์˜ ๋‹ค๋ฅธ ์ฝ”๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๊ณต๊ฐ„๋ณต์žก๋„๋Š” O(N^2) ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ณต๊ฐ„๋ณต์žก๋„๋Š” ์™œ ํ•„์š”ํ• ๊นŒ์š”? ๋ฌธ์ œ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์ด 80MB๋ผ๋Š” ์‹์œผ๋กœ..
[์ฝ”๋“œํŠธ๋ฆฌ] ๋ฐ˜๋ณต๋ฌธ์˜ ์‹œ๊ฐ„๋ณต์žก๋„(2) SW์ค‘์‹ฌ๋Œ€ํ•™ ์‚ฌ์—…๋‹จ์—์„œ CodeTree์™€ ํ•จ๊ป˜ ์‹ค์‹œํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ ์บ ํ”„์— ์ฐธ์—ฌํ•˜์—ฌ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ณต๋ฌธ ์‹œ๊ฐ„๋ณต์žก๋„ ๋ฌธ์ œ ์ค‘ ์–ด๋ ค์› ๋˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. (1) function solution(n, m) set sum = 0 set visited = [n][m] for i = 1 ... i
[์ฝ”๋“œํŠธ๋ฆฌ] ๋ฐ˜๋ณต๋ฌธ์˜ ์‹œ๊ฐ„๋ณต์žก๋„(1) SW์ค‘์‹ฌ๋Œ€ํ•™ ์‚ฌ์—…๋‹จ์—์„œ CodeTree์™€ ํ•จ๊ป˜ ์‹ค์‹œํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ ์บ ํ”„์— ์ฐธ์—ฌํ•˜์—ฌ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. function example(n) while 0 > n or n > 100 if n < 0 n++ else n-- return n ์œ„ ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ n์— ๊ฐ’์— ๋”ฐ๋ผ ์—ฐ์‚ฐ์˜ ํšŸ์ˆ˜๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ์‹œ๊ฐ„๋ณต์žก๋„๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ตœ์•…์„ ๊ธฐ์ค€์œผ๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ด์œ ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์„ ์ฒดํฌํ•˜๊ธฐ ์œ„ํ•จ์ด์—ˆ์ฃ ? ๋‹น์—ฐํžˆ ์ž…๋ ฅ๊ฐ’์ด ์•„์ฃผ ํฌ๊ฑฐ๋‚˜ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋„ ๋“ค์–ด์˜ฌ ๊ฐ€๋Šฅ์„ฑ์ด ์กด์žฌํ•˜๋ฏ€๋กœ ์ตœ์•…์˜ ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•˜๋ฉด ์–ด๋– ํ•œ ์ƒํ™ฉ์—์„œ๋„ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚œ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ ์„ ์ƒ๊ธฐํ•œ ์ฑ„๋กœ, ๋ฐ˜๋ณต๋ฌธ์˜ ์‹œ๊ฐ„๋ณต์žก๋„์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค. for set ..

728x90