[ํ•ด๊ฒฐ์™„๋ฃŒ !] ๐Ÿ˜ญ๋„์™€์ฃผ์„ธ์š”.. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด..

๊ณ ๋Ÿญํ‚คยท2021๋…„ 5์›” 27์ผ
0

์ง€์ธ์˜ ๋„์›€์œผ๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐ ! ๋กœ์ง์— ๋ฌธ์ œ๋Š” ์—†๊ณ .. ๋‹น์—ฐ ๋ฐ˜๋ก€๋„ ์—†๊ณ .. ๊ทธ์ € ์ฝ”๋“œ ๋”ฑ ํ•œ๊ธ€์ž ์ž˜๋ชป๋˜์—ˆ๋‹ค๋Š”.. ใ…Žใ…Ž.. ๋””๋ฒ„๊น… ํ•˜๋ฉด์„œ ์™œ ๋ชฐ๋ž๋Š”์ง€ ์˜๋ฌธ์ž…๋‹ˆ๋‹ค ์ง„์งœ ์ˆ˜์‹ญ๋ฒˆ .. ํ–ˆ๋Š”๋ฐ ! ๋‹ค์Œ ๊ธ€์— ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด ๊ธ€๋กœ ๋‹ค์‹œ ์“ฐ๋ฉด์„œ ์ œ๊ฐ€ ์ž˜๋ชป ํ’€์—ˆ๋˜ ๋ถ€๋ถ„๋„ ๋…น์—ฌ๋ณด๊ฒ ์”๋‹ˆ๋‹ค !

์—ฌ๋Ÿฌ๋ถ„ ๋„์™€์ฃผ์„ธ์š”.. ์˜ค๋Š˜ ํ•˜๋ฃจ ์ข…์ผ ์ด๊ฒƒ๋งŒ ๊ณ ๋ฏผํ•œ ๊ฒƒ ๊ฐ™์•„์š”.. ๐Ÿ˜ญ ๋ฌธ์ œ ์ „๋ฌธ๊ณผ ํ’€์ด ์ฝ”๋“œ๋Š” ๋’ค์— ์ด์–ด์ง€๊ณ , ์šฐ์„  ์ œ๊ฐ€ ๋ฌด์—‡๋•Œ๋ฌธ์— ๊ณ ์ถฉ์„ ๊ฒช๊ณ  ์žˆ๋Š”์ง€ ๋จผ์ € ์„ค๋ช…ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ( ์ €๋Š” ์ด๋ฏธ ๋ฌธ์ œ๋ฅผ ์•Œ๊ณ , ์‹ฌ์ง€์–ด ๊ณ ๋ฏผ์„ ๋ช‡ ์‹œ๊ฐ„์€ ํ•œ ํ›„์— ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด๋ผ์„œ ์ž์„ธํžˆ ์“ด๋‹ค๊ณ  ํ•ด๋„ '์•„์”จ ๋„์™€๋‹ฌ๋ผ๋”๋‹ˆ ๋ญ” ์†Œ๋ฆฌ์•ผ;' ์‹ถ์„ ์ˆ˜ ์žˆ์–ด์š” ใ… ใ…กใ…  ํ˜น ๊ทธ๋Ÿฌ์‹œ๋‹ค๋ฉด ์•„๋ž˜์— ๋ฌธ์ œ ์ „๋ฌธ์„ ๋ณด๊ณ  ์˜ค์‹œ๋Š” ๊ฑธ ์ถ”์ฒœ๋“œ๋ ค์š” ! )

๊ฐ„๋‹จํ•œ ๋ฌธ์ œ ์„ค๋ช…๊ณผ ์ง€๊ธˆ ๊ฒช๊ณ  ์žˆ๋Š” ๋ฌธ์ œ โ—๏ธ

[ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ ์š”์•ฝ ]
์•„๋ž˜์—์„œ ์„ค๋ช…ํ•  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋Š” ๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ทธ๋ž˜ํ”„์—์„œ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒฝ๋กœ์ค‘์—์„œ ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๊ฐ€ ๋” ๋น ๋ฅธ ๊ฒฝ์šฐ๋ฅผ ๋„์ถœํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

  • ๊ฐ ๋…ธ๋“œ๋Š” ๋‘ ๋‹จ์–ด๋ฅผ ๋‹ด๊ณ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋…ธ๋“œ์˜ ์—ฐ๊ฒฐ์„ ์„ค๋ช…ํ•˜์ž๋ฉด, ํ˜„ ๋…ธ๋“œ์˜ ๋‘ ๋ฒˆ์งธ ๋‹จ์–ด์™€ ๋‹ค๋ฅธ ๋…ธ๋“œ์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ์–ด๊ฐ€ ์ผ์น˜ํ•œ๋‹ค๋ฉด ํ•ด๋‹น ๋…ธ๋“œ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ฆ‰, [A - B]๋…ธ๋“œ์—์„œ [B - A]๋…ธ๋“œ๋กœ๋Š” ์ด๋™ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, [A - B]์—์„œ [C - A]๋กœ๋Š” ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    • ์ „์ž์˜ ๊ฒฝ์šฐ ๊ฒฝ๋กœ๋Š” ABA๊ฐ€ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์•„๋ž˜ ๋ฌธ์ œ๋ฅผ ์ฝ๊ณ  ์˜ค์…จ๋‹ค๋ฉด, ์ €๋Š” ํ‹ฐ์ผ“ ํ•˜๋‚˜๋ฅผ ๋…ธ๋“œ๋กœ ๋ณด๊ณ  ๋ฌธ์ œ๋ฅผ ํ‘ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค !

์ €๋Š” ์ด ๋ฌธ์ œ๋ฅผ ์•„๋ž˜์˜ 1๋ฒˆ ๋ฐฉ๋ฒ•์œผ๋กœ ๋จผ์ € ํ’€์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ํ•˜๋‚˜๊ฐ€ ํ‹€๋ฆฌ๋‹ค๊ณ  ๋‚˜์™”๊ณ  ์™œ ํ‹€๋ฆฌ๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ํ›„์— ํ˜น์‹œ๋‚˜ ํ•˜๋Š” ๋งˆ์Œ์— 2๋ฒˆ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ค์‹œ ํ’€์–ด๋ณด์•˜๋”๋‹ˆ ๋‹ค ๋งž์•˜๋‹ค๊ณ  ๋‚˜์™”์Šต๋‹ˆ๋‹ค.

๊ฐ ํ’€์ด ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์— ์ฝ”๋“œ๋ฅผ ์ ์œผ๋ฉด์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์ง€๋งŒ, ์ œ๊ฐ€ ์ƒ๊ฐํ•˜๋Š” 1๋ฒˆ๊ณผ 2๋ฒˆ์˜ ์œ ์ผํ•œ ์ฐจ์ด๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • 1๋ฒˆ : ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋กœ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฏธ๋ฆฌ ์ •๋ ฌํ•˜๊ณ , ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋‹ค ํƒ์ƒ‰ํ•˜๋Š” ๊ฒฝ๋กœ ์ค‘์—์„œ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜์˜ค๋Š” ๊ฒฝ๋กœ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • 2๋ฒˆ : ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๋‹ค ํƒ์ƒ‰ํ•˜์—ฌ ์ €์žฅํ•ด๋‘” ํ›„์— ์ •๋ ฌํ•˜์—ฌ ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋กœ ๊ฐ€์žฅ ๋น ๋ฅธ ์ •๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ €๋Š” 1๋ฒˆ์ด ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๋‹ค ํƒ์ƒ‰ํ•˜์ง€ ์•Š๊ณ  ๊ฐ€์žฅ ๋นจ๋ฆฌ ๋ฐœ๊ฒฌํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์–ด์„œ ์‹œ๊ฐ„๋ณต์žก๋„ ์ธก๋ฉด์—์„œ ๋” ํšจ์œจ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด์„œ๋„ ์ด ๊ฒฝ๋กœ๊ฐ€ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒฝ๋กœ ์ค‘์—์„œ ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋กœ ๊ฐ€์žฅ ๋น ๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฏธ๋ฆฌ ๋‘ ๋ฒˆ์งธ ๋‹จ์–ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•ŒํŒŒ๋ฒณ์ˆœ ์ •๋ ฌ์„ ํ•ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋‹จ์–ด ๊ธฐ์ค€์œผ๋กœ ์•ŒํŒŒ๋ฒณ์ˆœ ์ •๋ ฌ์„ ํ•˜๋Š” ๊ฒƒ์ด ๊ฒฝ๋กœ์˜ ์•ŒํŒŒ๋ฒณ์ˆœ์ด ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์ด์œ ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ฌธ์ œ์˜ ์กฐ๊ฑด์œผ๋กœ, ์‹œ์ž‘ ๋…ธ๋“œ์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ์–ด๋Š” ํŠน์ • ๋‹จ์–ด(์šฐ์„  A๋ผ๊ณ  ํ•ด๋ด…์‹œ๋‹ค!)๋กœ ๊ณ ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์‹œ์ž‘ ๋…ธ๋“œ๋Š” ์ฒซ ๋ฒˆ์งธ ๋‹จ์–ด๊ฐ€ A์ด๋ฉฐ ๋‘ ๋ฒˆ์งธ ๋‹จ์–ด๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฅธ ์•ŒํŒŒ๋ฒณ์ธ ๋…ธ๋“œ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    ex > [A - B]
  • ๊ทธ๋ ‡๋‹ค๋ฉด ๋‘ ๋ฒˆ์งธ ๋…ธ๋“œ์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ์–ด๋Š” ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ์˜ ๋‘ ๋ฒˆ์งธ ๋‹จ์–ด๋กœ ์ •ํ•ด์ง€๊ฒŒ ๋˜๊ณ (๋Œ€์ถฉ B๋ผ๊ณ  ํ•ด๋ด…์‹œ๋‹ค!), ์„ธ ๋ฒˆ์งธ ๋…ธ๋“œ ์—ญ์‹œ ์ฒซ ๋ฒˆ์งธ ๋‹จ์–ด๊ฐ€ B์ด๋ฉฐ ๋‘ ๋ฒˆ์งธ ๋‹จ์–ด๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฅธ ์•ŒํŒŒ๋ฒณ์ธ ๋…ธ๋“œ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    ex > [B - A]
  • ์ €๋Š” ๋‘ ๋ฒˆ์งธ ๋‹จ์–ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๋…ธ๋“œ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ˜„ ๋…ธ๋“œ์˜ ๋‘ ๋ฒˆ์งธ ๋‹จ์–ด์™€ ์ผ์น˜ํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๋‹จ์–ด๋ฅผ ๊ฐ€์ง„ ๋…ธ๋“œ ์ค‘ ๊ฐ€์žฅ ๋จผ์ € ๋ฐœ๊ฒฌ๋œ ๋…ธ๋“œ๋ฅผ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ์„ ์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • ๋ฌผ๋ก  visited๋Š” ์ฒดํฌํ•˜์—ฌ์„œ ์ค‘๋ณต ๋ฐฉ๋ฌธ์€ ์—†์œผ๋ฉฐ, ์œ„์™€ ๊ฐ™์€ ๊ธฐ์ค€์œผ๋กœ ์„ ํƒํ•œ ๋…ธ๋“œ๋“ค๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฒฝ๋กœ๊ฐ€ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋‹ค ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, DFS๋กœ ํƒ์ƒ‰ํ•˜์—ฌ ์œ„์˜ ๊ธฐ์ค€์— ์˜ํ•˜์—ฌ ๊ทธ ๋‹ค์Œ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ œ ํ•˜์†Œ์—ฐ ์‹œ์ž‘์ž…๋‹ˆ๋‹ค..
๋„๋Œ€์ฒด ์™œ ! 1๋ฒˆ ํ’€์ด๊ฐ€ ํ‹€๋ฆฐ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค ใ… ใ…กใ… 

์ œ ์ƒ๊ฐ์— 1๋ฒˆ์€ ํ‹€๋ฆฌ๊ณ  2๋ฒˆ์ด ๋งž์œผ๋ ค๋ฉด 1๋ฒˆ์œผ๋กœ ํ’€์—ˆ์„ ๋•Œ, ์ฆ‰, ๋‘ ๋ฒˆ์งธ ๋‹จ์–ด ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด๋‘๊ณ  ํƒ์ƒ‰ํ•  ๋•Œ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฐ€์žฅ ๋จผ์ € ๋ฐœ๊ฒฌํ•œ ๊ฒฝ๋กœ๊ฐ€ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ๋ชจ๋“  ๊ฒฝ๋กœ ์ค‘์—์„œ ์•ŒํŒŒ๋ฒณ์ˆœ์œผ๋กœ ๊ฐ€์žฅ ๋น ๋ฅด์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ..

์ฆ‰, ๋‘ ๋ฒˆ์งธ ๋‹จ์–ด ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด๋‘๊ณ  ํƒ์ƒ‰ํ•œ ์ตœ์ข… ๊ฒฝ๋กœ๊ฐ€ (๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒฝ๋กœ ์ค‘์—์„œ) ์•ŒํŒŒ๋ฒณ์ˆœ์œผ๋กœ ๊ฐ€์žฅ ๋น ๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.. ์•ŒํŒŒ๋ฒณ์ˆœ์œผ๋กœ ๋” ๋น ๋ฅธ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ..

๊ทธ๋Ÿฐ ๋ฐ˜๋ก€๊ฐ€ ๋„์ €ํžˆ ๋– ์˜ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.. ( ๊ทธ ๋ฐ˜๋ก€๊ฐ€ 1๋ฒˆ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฒ ์ฃ .. )

๋„์™€์ฃผ์‹ค ์˜ํ–ฅ์ด ์žˆ๋‹ค๋ฉด โ—๏ธ

๐Ÿ’ก ๋ฐ”๋กœ ์œ„์— ๋งํ•œ ๊ทธ๋Ÿฐ ๋ฐ˜๋ก€๊ฐ€ ๋– ์˜ค๋ฅด์‹œ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š” !

๐Ÿ’ก ์•„๋‹ˆ๋ฉด ์œ„์— ์„ค๋ช…ํ•œ ์ œ ์ƒ๊ฐ์ด๋‚˜ ๋กœ์ง์— ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š” !

๐Ÿ’ก ๋ญ๋“ ์ง€ 1๋ฒˆ ์ฝ”๋“œ๊ฐ€ ํ‹€๋ฆฌ๋Š” ์ด์œ ๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š” !

๋ฌธ์ œ ์ „๋ฌธ

๋ฌธ์ œ ๋งํฌ

๋ฌธ์ œ ์„ค๋ช…

์ฃผ์–ด์ง„ ํ•ญ๊ณต๊ถŒ์„ ๋ชจ๋‘ ์ด์šฉํ•˜์—ฌ ์—ฌํ–‰๊ฒฝ๋กœ๋ฅผ ์งœ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ•ญ์ƒ "ICN" ๊ณตํ•ญ์—์„œ ์ถœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.

ํ•ญ๊ณต๊ถŒ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด 2์ฐจ์› ๋ฐฐ์—ด tickets๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋ฐฉ๋ฌธํ•˜๋Š” ๊ณตํ•ญ ๊ฒฝ๋กœ๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • ๋ชจ๋“  ๊ณตํ•ญ์€ ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž 3๊ธ€์ž๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.
  • ์ฃผ์–ด์ง„ ๊ณตํ•ญ ์ˆ˜๋Š” 3๊ฐœ ์ด์ƒ 10,000๊ฐœ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • tickets์˜ ๊ฐ ํ–‰ [a, b]๋Š” a ๊ณตํ•ญ์—์„œ b ๊ณตํ•ญ์œผ๋กœ ๊ฐ€๋Š” ํ•ญ๊ณต๊ถŒ์ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
  • ์ฃผ์–ด์ง„ ํ•ญ๊ณต๊ถŒ์€ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งŒ์ผ ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋กœ๊ฐ€ 2๊ฐœ ์ด์ƒ์ผ ๊ฒฝ์šฐ ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๊ฐ€ ์•ž์„œ๋Š” ๊ฒฝ๋กœ๋ฅผ return ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ๋„์‹œ๋ฅผ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋Š” ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

ticketsreturn
[["ICN", "JFK"], ["HND", "IAD"], ["JFK", "HND"]]["ICN", "JFK", "HND", "IAD"]
[["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]]["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"]

์ฝ”๋“œ ( ํ’€์ด 1 )

import java.util.*;
class Solution {
    public static String[] answer; // ๊ฒฝ๋กœ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ๋  ๋ฐฐ์—ด
    public static boolean[] visited; // DFS ๋ฐฉ๋ฌธ ์ฒดํฌ
    // ๋ชจ๋“  ๊ฒฝ๋กœ ํƒ์ƒ‰ํ•˜์ง€ ์•Š๊ณ  ์ฒซ ๋ฒˆ์งธ๋กœ ๋ชจ๋“  ๋…ธ๋“œ ๋ฐฉ๋ฌธ ๊ฒฝ๋กœ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ ํƒ์ƒ‰์„ ๋ฉˆ์ถ”๊ธฐ ์œ„ํ•œ ํ”Œ๋ž˜๊ทธ
    public static boolean flag = false;
    
    // DFS ํ•จ์ˆ˜
    // param : ํ‹ฐ์ผ“ ๋ฆฌ์ŠคํŠธ, ์‹œ์ž‘ ํ‹ฐ์ผ“์˜ ์ธ๋ฑ์Šค, ๋ฐฉ๋ฌธ ์ˆœ์„œ
    public static void dfs(String[][] tickets, int start, int count){
        visited[start] = true; // ์ฒซ ๋…ธ๋“œ ๋ฐฉ๋ฌธ ์ฒดํฌ
        answer[count] = tickets[start][0]; // count๋ฒˆ์งธ ๊ฒฝ๋กœ ๋„ฃ๊ธฐ
        // ์ถœ๋ฐœ์ง€ ๊ธฐ์ค€์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ๋„ฃ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
        // ๋งˆ์ง€๋ง‰ ํ‹ฐ์ผ“์ด๋ผ๋ฉด ๋„์ฐฉ์ง€๋ฅผ ๊ฒฝ๋กœ์˜ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋„ฃ์–ด์ฃผ๊ธฐ
        // ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋‘ ๋ฐฉ๋ฌธํ•œ ์ฒซ ๊ฒฝ๋กœ์ž„์œผ๋กœ ํƒ์ƒ‰์„ ๋ฉˆ์ถ”๊ธฐ ์œ„ํ•ด์„œ 
        // flag ์ง€์ • ๋ฐ return 
        if(count == tickets.length-1){
            answer[count+1] = tickets[start][1];
            flag = true;
            return;
        }
        // ๋„์ฐฉ์ง€ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋œ ์ˆœ์„œ๋Œ€๋กœ ํƒ์ƒ‰
        for(int i=0; i<tickets.length; i++){
            // ํ˜„์žฌ ํ‹ฐ์ผ“์˜ ๋„์ฐฉ์ง€๊ฐ€ ์ถœ๋ฐœ์ด๋ฉด์„œ ( ๋‹ค์Œ ํ‹ฐ์ผ“ ํ›„๋ณด )
            // ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ‹ฐ์ผ“ ์ฐพ๊ธฐ 
            if(tickets[i][0].equals(tickets[start][1]) && !visited[i]){
                dfs(tickets, i, count+1); // ์žฌ๊ท€์ ์œผ๋กœ ํƒ์ƒ‰
                if(flag) return; // flag ์ฒดํฌํ•ด์„œ ๊ฒฝ๋กœ ์ฐพ์•˜์œผ๋ฉด ๋น ๋ฅด๊ฒŒ ์ข…๋ฃŒํ•˜๊ธฐ
                // dfs ํ•จ์ˆ˜๋ฅผ ๋น ์ ธ๋‚˜์™”์œผ๋‚˜ flag๋Š” ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
                // ์ฆ‰ ํ•ด๋‹น ๊ฒฝ๋กœ๊ฐ€ ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋‹ค
                // ์žฌ๊ท€๋Š” ๋น ์ ธ๋‚˜์™”๊ณ  ๋‹ค์Œ ๋…ธ๋“œ ํƒ์ƒ‰์ธ๋ฐ
                // ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ ๋น ์ ธ๋‚˜์˜จ ํ‹ฐ์ผ“์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ๊ฒƒ์ด๋ฏ€๋กœ ๋‹ค์‹œ ์ฒดํฌ !
                visited[start] = false; 
            }
        }
    }

    public static String[] solution(String[][] tickets) {
        answer = new String[tickets.length+1];
        visited = new boolean[tickets.length];
        // ๋„์ฐฉ์ง€ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ
        Arrays.sort(tickets, new Comparator<String[]>() {
            @Override
            public int compare(String[] o1, String[] o2) {
                return o1[1].compareTo(o2[1]);
            }
        });
        for(int i=0; i<tickets.length; i++){
            if(tickets[i][0].equals("ICN")){
            	// ICN์ด ์ถœ๋ฐœ์ง€์ธ ๋…ธ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ผ๋•Œ
                // ๋จผ์ € ์œ„์น˜ํ•œ, ์ฆ‰ ๋„์ฐฉ์ง€๊ฐ€ ๋” ๋น ๋ฅธ ICN ๋…ธ๋“œ๋ฅผ ์‹œ์ž‘์œผ๋กœ ํ•  ๋•Œ
                // ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•จ
                Arrays.fill(visited, false);
                dfs(tickets, i, 0);
                // ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๊ณ  dfs๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด ๊ทธ๊ฒŒ ๊ฒฐ๊ณผ๋‹ˆ๊นŒ ์ข…๋ฃŒ !
                if(flag) break;
            }
        }
        return answer;
    }
}

์ฝ”๋“œ ( ํ’€์ด 2 )

import java.util.*;
class Solution {
	// ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๋Š” Arraylist
    public static ArrayList<String> answers = new ArrayList<>(); 
    public static boolean[] visited; // DFS ๋ฐฉ๋ฌธ ์ฒดํฌ
    
    // DFS ํ•จ์ˆ˜
    // param : ํ‹ฐ์ผ“ ๋ฆฌ์ŠคํŠธ, ์‹œ์ž‘ ๋‚˜๋ผ(ICN), ๋ฐฉ๋ฌธ ์นด์šดํŠธ, ๋ฐฉ๋ฌธ ๊ฒฝ๋กœ ๋ฌธ์ž์—ด
    public static void dfs(String[][] tickets, String start, int count, String answer){
    	// ์‹œ์ž‘ ๋‚˜๋ผ ๊ฒฝ๋กœ์— ์ถ”๊ฐ€
        answer += (start + " ");
        // ๋ชจ๋“  ํ‹ฐ์ผ“ ์‚ฌ์šฉ ์™„๋ฃŒ์ด๋ฏ€๋กœ ๊ฒฝ๋กœ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ 
        if(count == tickets.length){
            answers.add(answer);
            return;
        }
        for(int i=0; i<tickets.length; i++){
        	// ํ˜„์žฌ ํ‹ฐ์ผ“์˜ ๋„์ฐฉ์ง€๊ฐ€ ์ถœ๋ฐœ์ด๋ฉด์„œ ( ๋‹ค์Œ ํ‹ฐ์ผ“ ํ›„๋ณด )
            // ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ‹ฐ์ผ“ ์ฐพ๊ธฐ 
            if(tickets[i][0].equals(start) && !visited[i]){
                visited[i] = true; // ํ‹ฐ์ผ“ ์‚ฌ์šฉ ์ฒดํฌ 
                dfs(tickets, tickets[i][1], count+1, answer); // ์žฌ๊ท€ ํƒ์ƒ‰
                // ์žฌ๊ท€๋ฅผ ๋น ์ ธ๋‚˜์™€์„œ ๋‹ค๋ฅธ ๊ฒฝ๋กœ ํƒ์ƒ‰
                // ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ ๋น ์ ธ๋‚˜์˜จ ๊ฒฝ๋กœ๋Š” ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‹ค์‹œ ์ฒดํฌ !
                visited[i] = false;
            }
        }
    }

    public static String[] solution(String[][] tickets) {
        visited = new boolean[tickets.length];
        dfs(tickets, "ICN", 0, "");
        // ๋ชจ๋“  ๋…ธ๋“œ ๋ฐฉ๋ฌธํ•œ ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ์ •๋ ฌ
        Collections.sort(answers);
        // ๊ฐ€์žฅ ์•ž์— ์ •๋ ฌ๋œ ๊ฒƒ์„ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ์˜ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜
        return answers.get(0).split(" ");
    }
}

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2021๋…„ 5์›” 28์ผ

LeetCode 332 ์ผ์ • ์žฌ๊ตฌ์„ฑ ๋ฌธ์ œ๋ž‘ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ์ธ๋ฐ, ์ €๋Š” ์•„๋ž˜ TC์—์„œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค

์ž…๋ ฅ: [["JFK","KUL"],["JFK","NRT"],["NRT","JFK"]]
์ถœ๋ ฅ: ["JFK","KUL","NRT","JFK"]
์ •๋‹ต: ["JFK","NRT","JFK","KUL"]

ํ•œ๋ฒˆ ํ™•์ธํ•ด๋ณด์„ธ์š”!

(์ž๋ฐ” ์ฝ”๋“œ๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ๊ณ ...ใ… ใ… )

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ