๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ/BOJ

[BOJ] #5052 ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก

by dar0m! 2020. 6. 8.
์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ •๋‹ต ๋น„์œจ
1 ์ดˆ  256 MB 29.753 %
 

5052๋ฒˆ: ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก

๋ฌธ์ œ ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก์ด ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ, ์ด ๋ชฉ๋ก์ด ์ผ๊ด€์„ฑ์ด ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก์ด ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด, ํ•œ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ์˜ ์ ‘๋‘์–ด์ธ ๊ฒฝ์šฐ๊ฐ€ ์—†๏ฟฝ

www.acmicpc.net

 

๋ฌธ์ œ

 

ํ•ด๊ฒฐ

key point, TRIE(ํŠธ๋ผ์ด) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  1. ์ž…๋ ฅ๋ฐ›์€ n๊ฐœ์˜ ์ „ํ™”๋ฒˆํ˜ธ๋กœ ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก์„ ๋งŒ๋“ ๋‹ค. → insert()
  2. n๊ฐœ์˜ ์ „ํ™”๋ฒˆํ˜ธ๋กœ ๋ชจ๋‘ ๊ตฌ์„ฑํ•œ ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก์—์„œ "ํ•œ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ์˜ ์ ‘๋‘์–ด์ธ ๊ฒฝ์šฐ"๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค. → find()
    1. ํ•œ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๋ฒˆํ˜ธ์˜ ์ ‘๋‘์–ด์ธ ๊ฒฝ์šฐ๋ผ๋ฉด flg ๋ณ€์ˆ˜์˜ ๊ฐ’์„  true๋กœ ๋ณ€๊ฒฝ
    2. ์•„๋‹ˆ๋ผ๋ฉด, flg๋Š” ๊ทธ๋Œ€๋กœ false
  3. flg๊ฐ’์ด true๋ผ๋ฉด ์ผ๊ด€์„ฑ์ด ์—†๋Š” ๋ชฉ๋ก์ด๋ฏ€๋กœ NO๋ฅผ ์ถœ๋ ฅํ•˜๊ณ 
  4. ture๋ผ๋ฉด YES๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํŠธ๋ผ์ด

์ „ํ™”๋ฒˆํ˜ธ๋กœ ํŠธ๋ผ์ด๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ๋Š” ์–ด๋– ํ•œ ๋‹จ์–ด๋„ ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š” ํ•˜๋‚˜์˜ ๋ฃจํŠธ(์ตœ์ƒ์œ„ ๋…ธ๋“œ)์— n๊ฐœ์˜ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๋ชจ๋‘ ์ €์žฅํ–ˆ๋‹ค. 

๋ฃจํŠธ๋Š” 0~9๊นŒ์ง€์˜ child๋ฐฐ์—ด์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ ๊ฐ๊ฐ์˜ ๋ฐฐ์—ด์€ TRIE ํฌ์ธํ„ฐ์ด๋‹ค.

insert ํ•จ์ˆ˜ ๋‚ด์—์„œ๋Š”, ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด( = ์ธ์ž๋กœ ์ „๋‹ฌ๋œ ๋ฌธ์ž์—ด = key)์„ ๊ฐ€์ง€๊ณ  ์ฐจ๋ก€๋Œ€๋กœ ์ž์‹ ๋…ธ๋“œ๋กœ ์ด๋™ํ•ด๊ฐ€๋ฉด์„œ, ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋น„์–ด์žˆ์„๊ฒฝ์šฐ ๋งŒ๋“ค์–ด์ฃผ๊ณ , ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด์˜ ๋์„ ๋งŒ๋‚ฌ๋‹ค๋ฉด is_terminal์„ true๋กœ ๋ฐ”๊ฟ” ํ•ด๋‹น ๋…ธ๋“œ๊ฐ€ ๋ฌธ์ž์—ด์˜ ๋งˆ์ง€๋ง‰์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

find ํ•จ์ˆ˜ ๋‚ด์—์„œ๋Š”, ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก์—์„œ key์˜ ์ ‘๋‘์–ด๊ฐ€ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ์ฐพ๋Š” ์—ฐ์‚ฐ์„ ํ•œ๋‹ค. key์˜ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก์„ ๋”ฐ๋ผ ๊ฐ€๋ฉด์„œ ํƒ์ƒ‰์„ ํ•˜๋Š”๋ฐ, key๊ฐ€ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๊ฐ€ ์•„๋‹ˆ๋ฉด์„œ ์ „ํ™”๋ฒˆํ˜ธ ๋ชฉ๋ก์—์„œ ๋จผ์ € ๋๋‚˜๋Š” ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ ‘๋‘์–ด๋ฅผ ์ฐพ์€ ๊ฒƒ์ด๋ฏ€๋กœ true๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ , ์ ‘๋‘์–ด๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ๋งˆ์ง€๋ง‰์€ ์ž๊ธฐ์ž์‹ ์ด๋ฏ€๋กœ '\0'๋ฌธ์ž๊ฐ€ ๋˜์–ด false๊ฐ€ ๋ฆฌํ„ด๋˜๊ฒŒ ๋œ๋‹ค.

 

์ฝ”๋“œ

๋ฉ”๋ชจ๋ฆฌ ์‹œ๊ฐ„
 8056 KB  136 ms

 

๋Œ“๊ธ€