๐ŸŽฒ[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ˆซ์ž ๋ธ”๋ก

Chobbyยท2022๋…„ 7์›” 19์ผ
1

Programmers

๋ชฉ๋ก ๋ณด๊ธฐ
34/345

ํ•ด๋‹น ๊ฒŒ์‹œ๋ฌผ์€ 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 ๋Š” 1 ์ด์ƒ 1,000,000,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ด๊ณ , begin๋Š” ํ•ญ์ƒ end๋ณด๋‹ค ์ž‘์Šต๋‹ˆ๋‹ค.
  • end - begin ์˜ ๊ฐ’์€ ํ•ญ์ƒ 10,000์„ ๋„˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๐Ÿงจ์ž…์ถœ๋ ฅ ์˜ˆ

beginendresult
110[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
profile
๋‚ด ์ง€์‹์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€๋‹ดํ•จ

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