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

๐Ÿบ ๋งค์ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

2018 ์นด์นด์˜ค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ 1์ฐจ ๋น„๋ฐ€์ง€๋„ JS ๋ฌธ์ œํ’€์ด


๐Ÿ”—์ง์ ‘ ๋ฌธ์ œ ํ’€๋Ÿฌ๊ฐ€๊ธฐ

 

 

๋ฌธ์ œ

  1. ์ง€๋„๋Š” ํ•œ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ n์ธ ์ •์‚ฌ๊ฐํ˜• ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ, ๊ฐ ์นธ์€ ๊ณต๋ฐฑ(" ") ๋˜๋Š”๋ฒฝ("#") ๋‘ ์ข…๋ฅ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
  2. ์ „์ฒด ์ง€๋„๋Š” ๋‘ ์žฅ์˜ ์ง€๋„๋ฅผ ๊ฒน์ณ์„œ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ๊ฐ ์ง€๋„1๊ณผ ์ง€๋„2๋ผ๊ณ  ํ•˜์ž. ์ง€๋„1 ๋˜๋Š” ์ง€๋„2 ์ค‘ ์–ด๋Š ํ•˜๋‚˜๋ผ๋„ ๋ฒฝ์ธ ๋ถ€๋ถ„์€ ์ „์ฒด ์ง€๋„์—์„œ๋„ ๋ฒฝ์ด๋‹ค. ์ง€๋„ 1๊ณผ ์ง€๋„ 2์—์„œ ๋ชจ๋‘ ๊ณต๋ฐฑ์ธ ๋ถ€๋ถ„์€ ์ „์ฒด ์ง€๋„์—์„œ๋„ ๊ณต๋ฐฑ์ด๋‹ค.
  3. ์ง€๋„ 1๊ณผ ์ง€๋„ 2๋Š” ๊ฐ๊ฐ ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ๋‹ค.
  4. ์•”ํ˜ธํ™”๋œ ๋ฐฐ์—ด์€ ์ง€๋„์˜ ๊ฐ ๊ฐ€๋กœ์ค„์—์„œ ๋ฒฝ ๋ถ€๋ถ„์„ 1, ๊ณต๋ฐฑ ๋ถ€๋ถ„์„ 0์œผ๋กœ ๋ถ€ํ˜ธํ™”ํ–ˆ์„ ๋•Œ ์–ป์–ด์ง€๋Š” ์ด์ง„์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์˜ ๋ฐฐ์—ด์ด๋‹ค.

 

 

๋ฌธ์ œํ’€์ด

 

1. ๊ฐ ๋ฐฐ์—ด์˜ i๋ฒˆ์งธ ์ •์ˆ˜๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋ฐ”๊พธ์—ˆ์„ ๋–„ 01 ๊ณผ 11๋ผ๋ฉด ํ•ด๋…๋œ ์ˆซ์ž๋Š” ์ด์ง„์ˆ˜ 11์ด๋‹ค. ์ฆ‰, OR ์—ฐ์‚ฐ์„ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค.

2. ๊ฒฐ๊ณผ๋กœ n ๊ธธ์ด์˜ ๋ฌธ์ž์—ด์„ n๊ฐœ ๋‹ด์€ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. i๋ฒˆ์งธ ์ด์ง„์ˆ˜์˜ 1์€ #์œผ๋กœ 0์€ ๊ณต๋ฐฑ์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผํ•œ๋‹ค.

 

 

 

์ •์ˆ˜๋ฅผ ์ด์ง„์ˆ˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , n๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉฐ 1์„ #๋กœ 0์„ ๊ณต๋ฐฑ์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

  • NUMBER.prototype.toString([radix]): ์ •์ˆ˜ 2 - 36์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ง„์ˆ˜๋ฅผ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ์šฐ ์Œ์ˆ˜๊ฐ’์„ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค ๊ฐ’์œผ๋กœ ์ค„ ๋•Œ, undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

์ •๊ทœํ‘œํ˜„์‹์„ ํ™œ์šฉํ•œ ์ข€ ๋” ์งง์€ ํ’€์ด

  • ์ •๊ทœํ‘œํ˜„์‹ ํ”Œ๋ž˜๊ทธ
    • g ์ „์—ญ๊ฒ€์ƒ‰
    • i ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†๋Š” ๊ฒ€์ƒ‰
    • m ๋‹ค์ค‘ํ–‰(multi-line) ๊ฒ€์ƒ‰
    • s .์— ๊ฐœํ–‰ ๋ฌธ์ž๋„ ๋งค์นญ(es2018)
    • u ํŒจํ„ด์„ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ์˜ ๋‚˜์—ด๋กœ ์ทจ๊ธ‰
    • y sticky ๊ฒ€์ƒ‰

 

 

์‹œ๊ฐ„๋ณต์žก๋„: O(N^2)

๊ณต๊ฐ„๋ณต์žก๋„: O(N)