ํด๋น ๊ฒ์๋ฌผ์ longroadhome๋์ velog ๊ฒ์๋ฌผ ์ค ํ๋ก๊ทธ๋๋จธ์ค LV.4 ์ซ์ ๋ธ๋ก JS ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑ๋์์์ ๋ฏธ๋ฆฌ ๋ฐํ๋๋ค.
๊ทธ๋ ์์๋ 0์ผ๋ก ๋ ๋๋ก์ ์ซ์ ๋ธ๋ก์ ์ค์นํ๊ธฐ๋ก ํ์์ต๋๋ค. ์ซ์ ๋ธ๋ก์ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ธ๋ก์ ๋ฒํธ๊ฐ n ์ผ ๋, ๊ฐ์ฅ ์ฒ์ ๋ธ๋ก์ n 2๋ฒ์งธ ์์น์ ์ค์นํฉ๋๋ค. ๊ทธ๋ค์์ n 3, ๊ทธ๋ค์์ n * 4, ...๋ก ์งํํฉ๋๋ค.๋ง์ฝ ๊ธฐ์กด์ ๋ธ๋ก์ด ๊น๋ ค์๋ ์๋ฆฌ๋ผ๋ฉด ๊ทธ ๋ธ๋ก์๋นผ๊ณ ์๋ก์ด ๋ธ๋ก์ผ๋ก ์ง์ด๋ฃ์ต๋๋ค.
์๋ฅผ ๋ค์ด 1๋ฒ ๋ธ๋ก์ 2,3,4,5, ... ์ธ ์์น์ ์ฐ์ ์ค์นํฉ๋๋ค. ๊ทธ๋ค์ 2๋ฒ ๋ธ๋ก์ 4,6,8,10, ... ์ธ ์์น์ ์ค์นํ๊ณ , 3๋ฒ ๋ธ๋ก์ 6,9,12... ์ธ ์์น์ ์ค์นํฉ๋๋ค.
์ด๋ ๊ฒ 3๋ฒ ๋ธ๋ก๊น์ง ์ค์นํ๊ณ ๋๋ฉด ์ฒซ 10๊ฐ์ ๋ธ๋ก์ 0, 1, 1, 2, 1, 3, 1, 2, 3, 2์ด๋ฉ๋๋ค.
๊ทธ๋ ์๋ ๊ธธ์ด๊ฐ 1,000,000,000์ธ ๋๋ก์ 1๋ฒ ๋ธ๋ก๋ถํฐ ์์ํ์ฌ 10,000,000๋ฒ ๋ธ๋ก๊น์ง ์์ ๊ท์น์ผ๋ก ๋ชจ๋ ๋์์ต๋๋ค.
๊ทธ๋ ์์ ์์ฅ๋์ ํน์ ๊ตฌ๊ฐ์ ์ด๋ค ๋ธ๋ก์ด ๊น๋ ค ์๋์ง ์๊ณ ์ถ์ต๋๋ค.
๊ตฌ๊ฐ์ ๋ํ๋ด๋ ๋ ์ begin, end ๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด ์ง ๋, ๊ทธ ๊ตฌ๊ฐ์ ๊น๋ ค ์๋ ๋ธ๋ก์ ์ซ์ ๋ฐฐ์ด(๋ฆฌ์คํธ)์ returnํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
begin | end | result |
---|---|---|
1 | 10 | [0, 1, 1, 2, 1, 3, 1, 4, 3, 5] |
์
์ถ๋ ฅ ์ #1
๋ค์๊ณผ ๊ฐ์ด ๋ธ๋ญ์ด ๊น๋ฆฌ๊ฒ ๋ฉ๋๋ค.
โป ๊ณต์ง - 2019๋ 4์ 07์ผ ํ ์คํธ์ผ์ด์ค๊ฐ ๋ณ๊ฒฝ๋์์ต๋๋ค.
๋์ ํ์ด
ํด๋น ๋ฌธ์ ๋ ๊ฐ ์นธ์ ์์ ์ ์ ์ธํ ์ฝ์ ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ด ๋ค์ด๊ฐ์ผํ๋ค๋ ๊ฒ๊ณผ ์ฝ์๋ฅผ ๊ตฌํ๋ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์๊ณ ์๋ค๋ฉด ์ฝ๊ฒ ํ์ด๊ฐ ์ ์๋ ๋ฌธ์ ์ด๋ค.
// ์ฝ์ ๊ตฌํด์ i ๋ฒ์งธ์ ์ ์ผ ํฐ ์ฝ์ ๋ฃ์ผ๋ฉด ๋จ
// ์ ์ผ ๋ฎ์ ์ฝ์๋ก ์ํ๋ ๊ฐ์ ๋๋ ๋ชซ์ด ์ ์ผ ํฐ ์ฝ์์
// ex) 10์ 2๊ฐ ์ ์ผ ๋ฎ์ ์ฝ์, 10/2 = 5 ๊ฐ ์ ์ผ ํฐ ์ฝ์
function solution(begin, end) {
const Arr = Array(end-begin+1)
// ์์ ๋ถ๋ถ๋ถํฐ ๋ ๋ถ๋ถ๊น์ง ๋ฐ๋ณต
for(let i = begin ; i <= end ; i++ ) {
Arr[i-begin] = getDivision(i)
}
if(begin === 1 ) Arr[0] = 0
return Arr
}
function getDivision(num) {
// ์ ๊ณฑ๊ทผ๊น์ง๋ง ๋ฐ๋ณตํ๋ฉฐ ์ฝ์๋ฅผ ์ฐพ์๋ค๋ฉด ์๋ฅผ ํด๋น ์ฝ์๋ก ๋๋์ด์ค ๊ฐ์ ๋ฐํ
for(let i = 2; i <= Math.sqrt(num); i ++) {
if(num % i === 0 && num / i <= 1e7 ) {
return num / i
}
}
return 1