๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋กcoding (6)

Lemonlover๐Ÿง˜๐Ÿป‍โ™€๏ธ

2020 ์นด์นด์˜ค ์‹ ์ž…์‚ฌ์› ์ฝ”๋”ฉํ…Œ์ŠคํŠธ - ๊ฐ€์‚ฌ ๊ฒ€์ƒ‰

https://programmers.co.kr/learn/courses/30/lessons/60060 ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๊ฐ€์‚ฌ ๊ฒ€์ƒ‰ | ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค programmers.co.kr ์ด๋ฒˆ์—๋Š” ์นด์นด์˜ค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ 4๋ฒˆ์งธ ๋ฌธ์ œ ํ’€์ด ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” 'Trie' ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํฌ๊ฒŒ KMP, Trie, Rabin-Karp, Aho-Corasick, Suffix Array ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Trie๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋Œ€ํšŒ๋‚˜ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์—์„œ ํ”ํžˆ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์นด์นด์˜ค ์ฝ”ํ…Œ์—์„œ ์ด ๋ฌธ์ œ๋Š” ๋‘ ๋ฒˆ์ด๋‚˜ ๋‚˜์˜จ๊ฑธ ๋ณด๋ฉด ์ข€ ํŠน์ดํ•˜๊ธด ํ•ฉ๋‹ˆ๋‹ค. Trie ๋Š” ์—ฌ๋Ÿฌ ๋ฌธ์ž์—ด์„ ๋น ๋ฅด๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ๋ฌธ์ž์—ด์ด ์žˆ๋‚˜ ์ฐพ์„ ๋•Œ ์•„์ฃผ ๋น ๋ฅด๊ฒŒ ์ฐพ์„..

๊ทธ๋ž˜ํ”„๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•˜๋Š”๊ฐ€

์–ด๋ ค์šด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ๊ฐ€ ํ•˜๋‚˜์”ฉ ์ถœ์ œ ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๊ทธ๋ž˜ํ”„ ๊ด€๋ จ ๋ฌธ์ œ๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, ์•„๋ž˜ ์ˆ˜์ค€์—์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค. 1. ์ตœ๋‹จ๊ฑฐ๋ฆฌ (ํ”Œ๋กœ์ด๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ / ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜) 2. ํŠธ๋ฆฌ 3. ์‹ธ์ดํด ์ฐพ๊ธฐ 4. ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ ๊ฐ€์žฅ ๋จผ์ € ํ•ด์•ผํ•  ๊ฒƒ์€ '๋…ธ๋“œ์™€ ๋…ธ๋“œ๋ฅผ ์—ฃ์ง€๋กœ ์ž‡๋Š” ๊ฒƒ' ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. 1. adjacent matrix 2. adjacent list ์ด ๋‘ ๊ฐ€์ง€์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊ทธ ์ „์— ์ผ๋ฐ˜์ ์œผ๋กœ ๊ทธ๋ž˜ํ”„์˜ ๋‘ ๊ฐ€์ง€ ์ข…๋ฅ˜์— ๋Œ€ํ•ด์„œ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. 1. directed graph (๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„) : ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ๊ทธ๋ฆผ์— ํ™”์‚ดํ‘œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜, ๋ฌธ์ œ ์„ค๋ช…์— 'a์—์„œ b๋กœ๋งŒ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค'๋ผ๋Š” ๋ง์ด ์žˆ์„ ๊ฒฝ์šฐ ..

algorithm/๊ธฐ์ดˆ 2019. 12. 16. 17:01
์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ์™„์ „ํƒ์ƒ‰์˜ ๊ธฐ๋ณธ์— ๋Œ€ํ•ด์„œ (2)

'์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ ์™„์ „ํƒ์ƒ‰์˜ ๊ธฐ๋ณธ์— ๋Œ€ํ•ด์„œ (1)' ์—์„œ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ˆซ์ž ์กฐํ•ฉ์„ ๊ณ ๋ฅด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ด๊ฒƒ๋งŒ ์•Œ๋ฉด ๊ทธ๋ณด๋‹ค ์ข€ ๋” ์–ด๋ ค์šด ๋ฌธ์ œ๋“ค ํ‘ธ๋Š” ๋ชจ๋“  ์ค€๋น„๋Š” ๋๋‚ฌ์ง€๋งŒ, ์‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ธฐ๋กœ ํ•ฉ์‹œ๋‹ค. https://www.acmicpc.net/problem/13302 13302๋ฒˆ: ๋ฆฌ์กฐํŠธ ์ˆ˜์˜์ด๋Š” ์—ฌ๋ฆ„๋ฐฉํ•™์„ ๋งž์ดํ•˜์—ฌ ๋งŽ์€ ๋†€์ด ์‹œ์„ค์ด ์žˆ๋Š” KOI ๋ฆฌ์กฐํŠธ์— ๋†€๋Ÿฌ๊ฐ€๋ ค๊ณ  ํ•œ๋‹ค. ๋ฆฌ์กฐํŠธ์˜ ํ•˜๋ฃจ ์ด์šฉ๊ถŒ์˜ ๊ฐ€๊ฒฉ์€ ๋งŒ์›์ด๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ์กฐํŠธ์˜ ๊ทœ๋ชจ๋Š” ์ƒ์ƒ์„ ์ดˆ์›”ํ•˜์—ฌ ๋ชจ๋“  ์‹œ์„ค์„ ์ถฉ๋ถ„ํžˆ ์ฆ๊ธฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•˜๋ฃจ๋กœ๋Š” ํ„ฐ๋ฌด๋‹ˆ์—†์ด ๋ถ€์กฑํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ๋งŽ์€ ์ด์šฉ๊ฐ๋“ค์€ 3์ผ ์ด์ƒ ์—ฐ์†์œผ๋กœ ์ด์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค. KOI ๋ฆฌ์กฐํŠธ์—์„œ๋Š” 3์ผ ์—ฐ์† ์ด์šฉ๊ถŒ์„ ํ• ์ธ๋œ ๊ฐ€๊ฒฉ ์ด๋งŒ์˜ค์ฒœ์›์—, ์—ฐ์† 5์ผ๊ถŒ์€ ์‚ผ๋งŒ์น ์ฒœ์›์— ํŒ๋งค..

algorithm/๊ธฐ์ดˆ 2019. 12. 13. 00:38
BOJ - ์ฃผ์‚ฌ์œ„ ์œท๋†€์ด (17825) [2019 ์‚ผ์„ฑ SW ๊ธฐ์ถœ]

https://www.acmicpc.net/problem/17825 17825๋ฒˆ: ์ฃผ์‚ฌ์œ„ ์œท๋†€์ด ์ฒซ์งธ ์ค„์— ์ฃผ์‚ฌ์œ„์—์„œ ๋‚˜์˜ฌ ์ˆ˜ 10๊ฐœ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. www.acmicpc.net 2019๋…„ ํ•˜๋ฐ˜๊ธฐ ์‚ผ์„ฑ ๊ธฐ์ถœ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์—์„œ ๊ฐ€์žฅ ์–ด๋ ค์šด ์ ์€ ๋ฐ”๋กœ '๋””์ž์ธ'์ž…๋‹ˆ๋‹ค. ๋„๋Œ€์ฒด ์ด ์œท๋†€์ด ํŒ์„ ์–ด๋–ป๊ฒŒ ๋””์ž์ธํ•ด์•ผ ํ•˜๋Š”๊ฐ€...? ์ฒ˜์Œ ํ•ด๋ณธ๋‹ค๋ฉด ๊ต‰์žฅํžˆ ๋‚œํ•ดํ•ฉ๋‹ˆ๋‹ค. 1. ์ •์‚ฌ๊ฐ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๋˜‘๊ฐ™์ด ๊ทธ๋ฆฐ๋‹ค. 2. ์›์„ ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ , ๊ทธ๋ž˜ํ”„๋กœ ์ƒ๊ฐํ•˜์—ฌ ๋””์ž์ธํ•œ๋‹ค. ์•„๋ฌด๋ž˜๋„ directed graph๋กœ ์ƒ๊ฐํ•˜๊ณ  ๋””์ž์ธํ•˜๋Š”๊ฒŒ ํ›จ์”ฌ ์‰ฌ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ํŒŒ๋ž€์ƒ‰ ๋…ธ๋“œ์—์„œ ์‹œ์ž‘ํ•  ๋•Œ, ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๊ฒŒ๋” ํ•ด์ฃผ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ ๊ฐฏ์ˆ˜๊ฐ€ ์ด 33๊ฐœ ์ •๋„(?) ๋˜๋Š” ๊ฒƒ ๊ฐ™๋„ค์š”. ๋ญ ์ด์ •๋„๋ฉด..