๊ธ€ ์ž‘์„ฑ์ž: ๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด

๋ฌธ์ œ

https://programmers.co.kr/learn/courses/30/lessons/43163

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋‹จ์–ด ๋ณ€ํ™˜

๋‘ ๊ฐœ์˜ ๋‹จ์–ด begin, target๊ณผ ๋‹จ์–ด์˜ ์ง‘ํ•ฉ words๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทœ์น™์„ ์ด์šฉํ•˜์—ฌ begin์—์„œ target์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฐ€์žฅ ์งง์€ ๋ณ€ํ™˜ ๊ณผ์ •์„ ์ฐพ์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 1. ํ•œ ๋ฒˆ์— ํ•œ ๊ฐœ์˜ ์•ŒํŒŒ๋ฒณ๋งŒ ๋ฐ”๊ฟ€ ์ˆ˜

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

๋‘ ๊ฐœ์˜ ๋‹จ์–ด begin, target๊ณผ ๋‹จ์–ด์˜ ์ง‘ํ•ฉ words๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทœ์น™์„ ์ด์šฉํ•˜์—ฌ begin์—์„œ target์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฐ€์žฅ ์งง์€ ๋ณ€ํ™˜ ๊ณผ์ •์„ ์ฐพ์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

1. ํ•œ ๋ฒˆ์— ํ•œ ๊ฐœ์˜ ์•ŒํŒŒ๋ฒณ๋งŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2. words์— ์žˆ๋Š” ๋‹จ์–ด๋กœ๋งŒ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด begin์ด "hit", target๊ฐ€ "cog", words๊ฐ€ ["hot","dot","dog","lot","log","cog"]๋ผ๋ฉด "hit" -> "hot" -> "dot" -> "dog" -> "cog"์™€ ๊ฐ™์ด 4๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๊ฐœ์˜ ๋‹จ์–ด begin, target๊ณผ ๋‹จ์–ด์˜ ์ง‘ํ•ฉ words๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ตœ์†Œ ๋ช‡ ๋‹จ๊ณ„์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ begin์„ target์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • ๊ฐ ๋‹จ์–ด๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ ๋‹จ์–ด์˜ ๊ธธ์ด๋Š” 3 ์ด์ƒ 10 ์ดํ•˜์ด๋ฉฐ ๋ชจ๋“  ๋‹จ์–ด์˜ ๊ธธ์ด๋Š” ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • words์—๋Š” 3๊ฐœ ์ด์ƒ 50๊ฐœ ์ดํ•˜์˜ ๋‹จ์–ด๊ฐ€ ์žˆ์œผ๋ฉฐ ์ค‘๋ณต๋˜๋Š” ๋‹จ์–ด๋Š” ์—†์Šต๋‹ˆ๋‹ค.
  • begin๊ณผ target์€ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” 0๋ฅผ return ํ•ฉ๋‹ˆ๋‹ค.

ํ’€์ด

์ฒ˜์Œ ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  "์™€ ์–ด๋ ต๋‹ค๊ณ "๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ์•ŒํŒŒ๋ฒณ๋งŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๊ณ , words์— ์žˆ๋Š” ๋‹จ์–ด๋กœ๋งŒ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์กฐ๊ฑด๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์†Œ ๋‹จ๊ณ„๋ฅผ ์•Œ์•„๋‚ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— DFS๋กœ ํ’€์ง€ ์•Š๊ณ  BFS๋กœ ํ’€์—ˆ์Šต๋‹ˆ๋‹ค.

 

depth๋ฅผ ์ €์žฅํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ์ง€๋งŒ, ์ €๋Š” depth๊ฐ€ ์‹œ์ž‘ํ•  ๋•Œ ํ์˜ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ €์žฅํ•ด๋‘๊ณ  ํ•ด๋‹น ํฌ๊ธฐ๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด depth๋ฅผ ์˜ฌ๋ ค์ฃผ๋Š” ๋ฐฉ์‹์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. for ๋ฌธ์ด ํ•˜๋‚˜ ๋” ์ƒ๊ฒจ์„œ ์ฝ”๋“œ๋Š” ์ข€ ๋ชป์ƒ๊ฒผ์ง€๋งŒ depth์— ๋Œ€ํ•œ ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์•„๋„ ๋ผ์„œ ํŽธํ•˜๋”๋ผ๊ตฌ์š”.

 

๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ words ๋ฐฐ์—ด์—์„œ ๋‹จ์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ํ˜„์žฌ ๊ธฐ์ค€์ด ๋˜๋Š” ๋‹จ์–ด์—์„œ ํ•œ๊ธ€์ž๋งŒ ๋ฐ”๊ฟ”์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋‹จ์–ด๋ผ๋ฉด ํ์— ์‚ฝ์ž…ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งค ๋ฐ˜๋ณต๋งˆ๋‹ค ํ์—์„œ ๋‹จ์–ด๋ฅผ ๊บผ๋‚ด์„œ ์‚ฌ์šฉํ•˜๊ณ ,  ์ƒˆ๋กœ ๊บผ๋‚ธ ๋‹จ์–ด๊ฐ€ target์œผ๋กœ ์ง€์ •ํ•œ ๋‹จ์–ด์™€ ๊ฐ™์€ ๋‹จ์–ด์ด๋ฉด ์ข…๋ฃŒํ•˜๊ณ  depth๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ—€์Šต๋‹ˆ๋‹ค.

 

์ถ”๊ฐ€์ ์œผ๋กœ ์—ฐ์‚ฐ์‹œ๊ฐ„์„ ์ตœ๋Œ€ํ•œ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ ์ด๋ฏธ ๊ฒ€์‚ฌํ–ˆ๋˜ ๋‹จ์–ด๋ฅผ Set์— ์ €์žฅํ•ด๋‘์–ด์„œ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š์€ ์ƒˆ๋กœ์šด ๋‹จ์–ด๋งŒ ๊ฒ€์‚ฌํ•˜๋„๋ก ํ•˜๊ณ , BFS์—์„œ๋Š” ์ฃผ๋กœ ํ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ด ๊ฒฝ์šฐ์—๋Š” depth๋งŒ ๊ตฌํ•ด์ฃผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰์— ๊ณ„์† append๋ฅผ ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๋‹จ์–ด๋ฅผ ๊บผ๋‚ผ ๋•Œ๋Š” ๋’ค์—์„œ๋ถ€ํ„ฐ ๊บผ๋‚ด์„œ ํ(์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฐ์—ด)์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ O(1)์ด ๋ณด์žฅ๋˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ