๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm

[Algorithm] ์™ธ๋ฒฝ์ ๊ฒ€

๐Ÿ“‹ ๋ฌธ์ œ

๋ ˆ์Šคํ† ๋ž‘์„ ์šด์˜ํ•˜๊ณ  ์žˆ๋Š” "์Šค์นดํ”ผ"๋Š” ๋ ˆ์Šคํ† ๋ž‘ ๋‚ด๋ถ€๊ฐ€ ๋„ˆ๋ฌด ๋‚ก์•„ ์นœ๊ตฌ๋“ค๊ณผ ํ•จ๊ป˜ ์ง์ ‘ ๋ฆฌ๋ชจ๋ธ๋ง ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ ˆ์Šคํ† ๋ž‘์ด ์žˆ๋Š” ๊ณณ์€ ์Šค๋…ธ์šฐํƒ€์šด์œผ๋กœ ๋งค์šฐ ์ถ”์šด ์ง€์—ญ์ด์–ด์„œ ๋‚ด๋ถ€ ๊ณต์‚ฌ๋ฅผ ํ•˜๋Š” ๋„์ค‘์— ์ฃผ๊ธฐ์ ์œผ๋กœ ์™ธ๋ฒฝ์˜ ์ƒํƒœ๋ฅผ ์ ๊ฒ€ํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์™ธ๋ฒฝ์˜ ๊ธธ์ด n, ์ทจ์•ฝ ์ง€์ ์˜ ์œ„์น˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด weak, ๊ฐ ์นœ๊ตฌ๊ฐ€ 1์‹œ๊ฐ„ ๋™์•ˆ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด dist๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ทจ์•ฝ ์ง€์ ์„ ์ ๊ฒ€ํ•˜๊ธฐ ์œ„ํ•ด ๋ณด๋‚ด์•ผ ํ•˜๋Š” ์นœ๊ตฌ ์ˆ˜์˜ ์ตœ์†Œ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

์ œํ•œ์‚ฌํ•ญ

  • n์€ 1 ์ด์ƒ 200 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • weak์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 15 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
    • ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์ทจ์•ฝ์ ์˜ ์œ„์น˜๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • ์ทจ์•ฝ ์ง€์ ์˜ ์œ„์น˜๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
    • weak์˜ ์›์†Œ๋Š” 0 ์ด์ƒ n - 1 ์ดํ•˜์ธ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค.
  • dist์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 8 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
    • dist์˜ ์›์†Œ๋Š” 1 ์ด์ƒ 100 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์นœ๊ตฌ๋“ค์„ ๋ชจ๋‘ ํˆฌ์ž…ํ•ด๋„ ์ทจ์•ฝ ์ง€์ ์„ ์ „๋ถ€ ์ ๊ฒ€ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ return ํ•ด์ฃผ์„ธ์š”.

 

์ž…์ถœ๋ ฅ ์˜ˆ

12 [1, 5, 6, 10] [1, 2, 3, 4]  2
12 [1, 3, 4, 9, 10] [3, 5, 7] 1

 

โœ๏ธ ํ’€์ด

๋ฌธ์ œ์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ๊ฝค ์–ด๋ ค์› ๋‹ค. ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๊ณ„์‚ฐํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚  ๊ฒƒ ๊ฐ™์•„์„œ ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ–ˆ๋Š”๋ฐ ์šฐ์„  ์‹œ๋„ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

์™ธ๋ฒฝ์€ ๋‘ฅ๊ทผ ํ˜•ํƒœ๋กœ ๋˜์–ด ์žˆ์–ด ๊ณ„์‚ฐํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์› ๊ธฐ ๋•Œ๋ฌธ์— ํŽธํ•˜๊ฒŒ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ผ์ž๋กœ ํŽด์ฃผ๋Š” ์ž‘์—…์„ ํ–ˆ๋‹ค. ์‹œ๊ณ„๋ฅผ ์˜ˆ๋กœ ๋“ ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ํ–ˆ๋‹ค. 1์‹œ ์ง€์ ์„ ์ธ๋ฑ์Šค 0, 12์‹œ๊ฐ€ ์ธ๋ฑ์Šค 11์ด๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ ์ผ์ž๋กœ ํŽด์„œ ๋‚˜์—ดํ•œ๋‹ค๋ฉด [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]๊ฐ€ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ œ๋Š” ๋‘ฅ๊ทผ ํ˜•ํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— 1์‹œ ์œ„์น˜(์ธ๋ฑ์Šค 0)์—์„œ 12์‹œ ์œ„์น˜(์ธ๋ฑ์Šค 11)์œผ๋กœ๋„ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐฐ์—ด์„ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] ์ด๋Ÿฐ์‹์œผ๋กœ ์ถ”๊ฐ€์ ์ธ ์š”์†Œ๋ฅผ ๋„ฃ์–ด์คฌ๋‹ค. ํ•˜์ง€๋งŒ ๊ณ„์‚ฐํ•  ๋•Œ๋ฅผ ์ƒ๊ฐํ•ด๋ณธ๋‹ค๋ฉด 12์‹œ ์œ„์น˜์—์„œ 1์‹œ ์œ„์น˜๋กœ ์ด๋™ํ•  ๋•Œ 12 - 1 ๋˜๋Š” 1 - 12๋ฅผ ํ•˜๋”๋ผ๋„ 1์ด๋ผ๋Š” ์ˆซ์ž๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ๋‘˜๋ž˜(n)๋งŒํผ ๋”ํ•ด์„œ ๋„ฃ์–ด [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]์˜ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜์‹œ์ผœ์คฌ๋‹ค.

 

์ทจ์•ฝ์ ์„ ์ด๋™ํ•  ๋•Œ ํ•œ๋ช…์˜ ์นœ๊ตฌ๊ฐ€ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋ฆฌ๋„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด combiDist ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ๊ฒฐ๊ณผ ๋ฐฐ์—ด(dists), ๋ฝ‘์„ ์นœ๊ตฌ(cnt), ํ˜„์žฌ์˜ ์กฐํ•ฉ์„ ๊ฐ€์ง€๋Š” ๋ฐฐ์—ด(arr), ๋ฝ‘์€ ์นœ๊ตฌ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฐ์—ด(check) ์ด ๋„ค๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ›์•„ ์ด์ฐจ์› ๋ฐฐ์—ด์œผ๋กœ ์นœ๊ตฌ๋“ค์˜ ์ˆœ์„œ ์กฐํ•ฉ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

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

 

๋‘ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๋ช‡ ๋ช…์˜ ์นœ๊ตฌ๋“ค์„ ์กฐํ•ฉํ• ์ง€ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด cnt๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฐ˜๋ชฉ๋ฌธ์„ ๋Œ๋ ค์คฌ๋‹ค. ์ด๋•Œ ์ตœ์†Œ ํ•œ๋ช…์˜ ์นœ๊ตฌ๋Š” ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 1๋ถ€ํ„ฐ ์นœ๊ตฌ๋“ค์˜ ์ˆ˜๊นŒ์ง€ ๋ฐ˜๋ณตํ–ˆ๋‹ค. ์ด ๋ฐ˜๋ณต๋ฌธ ๋‚ด๋ถ€์—์„œ ์นœ๊ตฌ๋“ค์˜ ์ˆœ์„œ ์กฐํ•ฉ(dists)์„ ๊ตฌํ•˜๊ณ  ์ˆœํšŒํ•˜๋ฉฐ ํ™•์ธํ•œ๋‹ค.

 

ํ™•์ธํ•  ๋•Œ๋Š” ํ˜„์žฌ ์ทจ์•ฝ ์ง€์ ์—์„œ ์›๋ž˜์˜ ์ทจ์•ฝ์  ๊ฐœ์ˆ˜๋ฅผ ๋”ํ•œ ์ง€์ ๊นŒ์ง€๋ฅผ ์ˆœํšŒํ•œ๋‹ค. ๋งŒ์•ฝ ์ทจ์•ฝ์ ์„ ๋‹ค ๋Œ์ง€ ๋ชปํ–ˆ์ง€๋งŒ ๋‚จ์€ ์นœ๊ตฌ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒํ•œ๋‹ค. ๋‹ค ๋Œ ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด๋ฌธ์ด ์žˆ๋Š”๋ฐ ์ด๋Š” ํ˜„์žฌ ๋Œ๊ณ  ์žˆ๋Š” ์นœ๊ตฌ๊ฐ€ ํ˜„์žฌ ์ทจ์•ฝ ์ง€์ ์—์„œ ๋‹ค์Œ ์ทจ์•ฝ ์ง€์ ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์นœ๊ตฌ๊ฐ€ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋‚จ์€ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐฑ์‹ (์ทจ์•ฝ ์ง€์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋นผ์คŒ)ํ•˜๊ณ , ๊ฐˆ ์ˆ˜ ์—†๋‹ค๋ฉด ํ˜„์žฌ ๋ฐฐ์—ด์—์„œ popํ•ด์ฃผ๋ฉฐ ์ œ๊ฑฐํ–ˆ๋‹ค. ์ทจ์•ฝ์ ์„ ๋ชจ๋‘ ์ˆœํšŒํ–ˆ์Œ์—๋„ ๋‚จ์€ ์นœ๊ตฌ๊ฐ€ ์กด์žฌํ•˜๊ฑฐ๋‚˜, ํ˜„์žฌ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์นœ๊ตฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ๋˜๋Š” ๋ชจ๋“  ์ทจ์•ฝ์ ์„ ๋Œ๊ณ  ๋งˆ์ง€๋ง‰ ์ทจ์•ฝ์ ์—์„œ ๋‚˜์˜จ ๊ฒฝ์šฐ(๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ 0์ด ๋œ ๊ฒฝ์šฐ) answer๋ฅผ Math.min์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐฑ์‹ ํ•ด์ค€๋‹ค.

 

๋งˆ์ง€๋ง‰์— ์ทจ์•ฝ์ง€์ ๋ณด๋‹ค answer๊ฐ€ ํฐ ๊ฒฝ์šฐ(์ฒ˜์Œ์— answer๋ฅผ Infinity๋กœ ์ดˆ๊ธฐํ™”ํ–ˆ์Œ) ์ทจ์•ฝ์ ์„ ๋Œ ์ˆ˜ ์—†๋‹ค๋Š” ์˜๋ฏธ์ด๊ธฐ ๋•Œ๋ฌธ์— -1์„ ๋ฐ˜ํ™˜ํ–ˆ๋‹ค.

 

๋ฌธ์ œ๋Š” ํ•ด๊ฒฐํ–ˆ์ง€๋งŒ ์‹œ๊ฐ„์ด ๊ฝค ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์‹œ๊ฐ„์„ ์ค„์ผ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ cnt๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐ˜๋ณต๋ฌธ(2๋ฒˆ์งธ for๋ฌธ)์—์„œ ๋งŒ์•ฝ ํ˜„์žฌ์˜ answer๋ณด๋‹ค cnt๊ฐ€ ๊ฐ™๊ฑฐ๋‚˜ ํฌ๋‹ค๋ฉด ํ™•์ธํ•  ์˜๋ฏธ๊ฐ€ ์—†์œผ๋ฏ€๋กœ breakํ•˜๋Š” ์กฐ๊ฑด๋ฌธ์„ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ–ˆ๋‹ค. 1000ms๋ฅผ ๋„˜๊ธฐ๋Š” ์ผ€์ด์Šค๋„ ์—ฌ๋Ÿฟ ์กด์žฌํ–ˆ๋Š”๋ฐ ๋ชจ๋‘ 1000ms ์ดํ•˜๋กœ ๋–จ์–ด์ง€๋Š” ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ถ”๊ฐ€๋กœ ๊ฐ cnt๋งˆ๋‹ค ์นœ๊ตฌ ์ˆœ์„œ ์กฐํ•ฉ์„ ๊ณ„์† ๊ตฌํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ cacheํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ด ์กฐํ•ฉ์—์„œ popํ•˜๊ฑฐ๋‚˜ ์ˆ˜๋ฅผ ๋นผ๊ณ  ๋”ํ•˜๋Š” ๋“ฑ ์กฐ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊นŠ์€๋ณต์‚ฌ๊ฐ€ ํ•„์š”ํ–ˆ๊ณ  ์˜คํžˆ๋ ค ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ ๊ฐ™์•„ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์•˜๋‹ค. ์ด ๋ถ€๋ถ„๋„ ํ•ด๊ฒฐํ•˜๋ฉด ๋” ํšจ์œจ์„ฑ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ๋  ๊ฒƒ ๊ฐ™๋‹ค!

 

โŒจ๏ธ ์ฝ”๋“œ

function solution(n, weak, dist) {
  var answer = Infinity;
  const weakLen = weak.length;
  const distLen = dist.length;

  for (let i = 0; i < weakLen; i++) weak.push(weak[i] + n);

  const combiDist = (dists, cnt, arr, check) => {
    if (cnt === arr.length) dists.push(arr);
    else {
      for (let i = 0; i < distLen; i++) {
        if (check[i]) continue;
        check[i] = 1;
        combiDist(dists, cnt, [...arr, dist[i]], [...check]);
        check[i] = 0;
      }
    }

    return dists;
  };

  for (let i = 0; i < weakLen; i++) {
    for (let cnt = 1; cnt < distLen + 1; cnt++) {
      if (answer <= cnt) break;

      const check = new Array(distLen).fill(0);
      const dists = combiDist([], cnt, [], check);

      for (const d of dists) {
        for (let k = i; k < i + weakLen - 1; k++) {
          if (!d.length) break;

          if (d[d.length - 1] >= weak[k + 1] - weak[k]) d[d.length - 1] -= weak[k + 1] - weak[k];
          else d.pop();
        }

        if (d.length) {
          answer = Math.min(answer, cnt);
          break;
        }
      }
    }
  }

  return answer > distLen ? -1 : answer;
}