๐Ÿ—๏ธ Algorithm/๐Ÿ”ท Python 2

[Python] ํŒŒ์ด์ฌ ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)

์šฐ์„ ์ˆœ์œ„ ํ (Priority Queue) โœ” ์šฐ์„ ์ˆœ์œ„ ํ? ํ์™€ ์Šคํƒ์ด๋‚˜ ๋น„์Šทํ•œ ์ž๋ฃŒํ˜•์ด์ง€๋งŒ, ๊ฐ ์›์†Œ๋“ค์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ์ด๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ์›์†Œ๋Š” ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ์›์†Œ๋ณด๋‹ค ๋จผ์ € ์ฒ˜๋ฆฌ๋œ๋‹ค. ๊ฐ™์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค๋ฉด, ๋จผ์ € ๋“ค์–ด์˜จ ์›์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ํž™(Heap)์ด๋ผ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ์ตœ์†Œํ•œ ๋‘ ๊ฐ€์ง€ ์—ฐ์‚ฐ์ด ์ง€์›๋˜์–ด์•ผ ํ•œ๋‹ค. ํ•˜๋‚˜์˜ ์›์†Œ๋ฅผ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง€์ •ํ•˜์—ฌ ์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜ (Push) ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ์›์†Œ๋ฅผ ํ์—์„œ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ (Pop) โœ” ํž™(Heap) ์ด๋ž€? ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(Complete Binary Tree)๋กœ, ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ๊ฐ’์ด ํ•ญ์ƒ ์ž์‹ ๋…ธ๋“œ๋“ค์˜ ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜(Max Heap), ์ž‘์•„์•ผ..

[Python] ํŒŒ์ด์ฌ ํŠน์ • ๋ฌธ์ž ์ฐพ๊ธฐ (find, startswith, endswith)

์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ์ค€๋น„ํ•˜๋ฉด์„œ ๋งŽ์€ ๋‚ด์žฅ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ •๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ฌธ์ž์—ด ์•ˆ์—์„œ ํŠน์ •ํ•œ ๋ฌธ์ž๋ฅผ ์ฐพ๊ฑฐ๋‚˜(find) ํŠน์ • ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž์—ด(startswith), ํŠน์ • ๋ฌธ์ž๋กœ ๋๋‚˜๋Š” ๋ฌธ์ž์—ด(endswith) find('string', location) s = 'abcdefg' s.find('b') # 1 s.find('a') # 0 s.find('a', 3) # -1 find : ๋ฌธ์ž์—ด ์ค‘์— ํŠน์ • ๋ฌธ์ž๋ฅผ ์ฐพ๊ณ  ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ / ์—†์„ ๊ฒฝ์šฐ -1 ๋ฆฌํ„ด startswith('start string', start location) s = 'abcdefg' s.startswith('a') # True s.startswith('b') # False s.startswith('c', s.find('c')) # ..