[Programmers] JavaScript, 3์ง๋ฒ ๋ค์ง๊ธฐ (toString(), parseInt(), reduce())
programmers.co.kr/learn/challenges
์ฝ๋ฉํ ์คํธ ์ฐ์ต
๊ธฐ์ด๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ, ์ง์ ์ฝ๋๋ฅผ ์์ฑํด ๋ณด์ธ์.
programmers.co.kr
๋ฌธ์
์์ฐ์ n์ด ์ฃผ์ด์ง ๋, n์ 3์ง๋ฒ์ผ๋ก ๋ฐ๊พธ๊ณ , ์ด๋ฅผ ์๋ค๋ก ๋ค์ง๋๋ค. ์ด๋ฅผ ๋ค์ 10์ง๋ฒ์ผ๋ก ๋ณํํ๋ค.
์ฝ๋
ํ์ด
10์ง๋ฒ์ 2์ง๋ฒ์ผ๋ก ๋ฐ๊พธ๋ ๋ก์ง๊ณผ ๋์ผํ๋ค. 2๋ก ๋๋ ๋๋จธ์ง ๋์ 3์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ num
์ ๋ด๋ ์์ด๋ค. n์ด 3๋ณด๋ค ์์ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํด num += n
์ ์์ง ๋ง๊ณ ์ถ๊ฐํด์ค๋ค. 10์ง๋ฒ์ 3์ง๋ฒ์ผ๋ก๋ง ๋ฐ๊พธ๋ ๋ฐ ๊ทธ์น์ง ์๊ณ ์ด๋ฅผ ๋ค์ง๊ธฐ ๋๋ฌธ์ ์ ๊ฐ์ ์ฝ๋๋ฅผ ์ผ๋ค.
parseInt()
๋ ๋ฌธ์์ด ์ธ์๋ฅผ ๊ตฌ๋ฌธ๋ถ์ํด ํน์ ์ง์์ ์ ์๋ฅผ ๋ฐํํ๋ค. ์ธ์๊ฐ ๋ฌธ์์ด์ด ์๋๋ผ๋ฉด ๋ฌธ์์ด๋ก ๋ณํํ๋ค. ๋ค์งํ 3์ง๋ฒ์ ๋ฌธ์์ด์ด๊ณ , ์ด๋ฅผ 3์ง๋ฒ์ผ๋ก ๋ฐ๊ฟ return ํด์ค๋ค.
๋ค๋ฅธ ํ์ด 2
solution2(n)
๋ ์์ ํ์ด์์ ์ฌ์ฉํ parseInt์ ์ฒซ ๋ฒ์งธ ์ธ์๊ฐ ๋ฌธ์์ด์์ ์ด์ฉํ๋ ํ์ด์ด๋ค. toString()
๋ฉ์๋๋ ํน์ Number ๊ฐ์ฒด๋ฅผ ๋ํ๋ด๋ ๋ฌธ์์ด์ ๋ฐํํ ์ ์๋ค.
numObj.toString([radix])
radix
: ์ง์๋ฅผ ๋ํ๋ด๋ ๊ธฐ์์ ๊ฐ- ์์ธ : ๋ง์ผ
toString()
์ 2 ~ 36 ์ฌ์ด ๊ฐ์ด ์๋radix
๊ฐ ์ฃผ์ด์ง๋ฉด RangeError๋ฅผ ๋ฐ์์ํจ๋ค.
45๋ฅผ 3์ง๋ฒ์ผ๋ก ๋ณํ์ํค๋ฉด ์์ฒ๋ผ ๊ฒฐ๊ณผ๋ฅผ ๋ธ๋ค. ์ด๋ฅผ spread operator๋ฅผ ํตํด ๋ฐฐ์ดํํ๊ณ , reverse()
๋ฉ์๋๋ก ๋ค์ง๊ณ , join
์ผ๋ก ๋ค์ ๋ฌธ์์ดํํ๋ค. parseInt
์ ๋ ๋ฒ์งธ ์ธ์์ 3๋ฅผ ๋ฃ์ด ๋ง์ง๋ง์ผ๋ก 3์ง๋ฒ์ผ๋ก ๋ง๋ฌด๋ฆฌํ๋ค.
๋ค๋ฅธ ํ์ด 3
์ฒซ ๋ฒ์งธ ํ์ด์์ while ๋ฌธ์ ์ฌ์ฉํ ๊ฒ๊ณผ ๋น์ทํ์ง๋ง, ๋ด์ฅ ํจ์ parseInt
๋ก ๋ง๋ฌด๋ฆฌํ๋ ๋์ reduce
ํจ์๋ก ์ง์ 3์ง๋ฒ์ผ๋ก ๋ฐ๊พธ๋ ํ์ด์ด๋ค. ๋์ ํด์ ๋ํด์ฃผ๋ ๋ฉ์๋์ธ reduce
๋ acc ์ธ์๋ก ์ด์ ๊ฐ์, v๋ก ํ์ฌ์ value๋ฅผ, i๋ก ํ์ฌ ๊ฐ์ index๋ฅผ ๋ฐ๊ณ ์๋ค.
reduce๋ ์ ๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฆ์ด๋ผ๋ ์๊ฐ์ด ๋ ๋ค. ๐๐