๐ŸŒ  ๋ฌธ์ œ

์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์„ธ ๊ฐœ ์ด์ƒ์ธ ์ˆ˜๋ฅผ ํ•ฉ์„ฑ์ˆ˜๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ž์—ฐ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ n์ดํ•˜์˜ ํ•ฉ์„ฑ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๐ŸŒ  ์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ n ≤ 100

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ

n result
10 5
15 8

๐ŸŒ  ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • 10 ์ดํ•˜ ํ•ฉ์„ฑ์ˆ˜๋Š” 4, 6, 8, 9, 10 ๋กœ 5๊ฐœ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 5๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • 15 ์ดํ•˜ ํ•ฉ์„ฑ์ˆ˜๋Š” 4, 6, 8, 9, 10, 12, 14, 15 ๋กœ 8๊ฐœ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 8์„ returnํ•ฉ๋‹ˆ๋‹ค.

๐Ÿงž ํ’€์ด

function solution(n) {
    // ํ•ฉ์„ฑ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค๋Š” ๊ฒƒ์€ ๊ณง ์†Œ์ˆ˜๋ฅผ ์ฐพ์•„์„œ ์ œ์™ธํ•˜๋Š” ๊ฒƒ์ด๋ผ ๋ด๋„ ๋œ๋‹ค.
    // ์†Œ์ˆ˜๋ฅผ ์ฐพ์œผ๋ ค๋ฉด? ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ์จ๋ณด์ž.
    
    // ๊ธธ์ด๊ฐ€ n์ธ ๋ฐฐ์—ด ์„ ์–ธ 
    let arr = new Array(n).fill(0);
    
    // 2๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ํŠน์ • ์ˆ˜์˜ ๋ฐฐ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ง€์šด๋‹ค.
    for (let i = 2; i <= n; i++) {
        // ์ด๋ฏธ ์ง€์›Œ์ง„ ์ˆ˜๋ผ๋ฉด ๊ฑด๋„ˆ๋›ด๋‹ค.
        if(arr[i]==-1) continue;
        
        // ๋ฐฐ์ˆ˜๋ถ€ํ„ฐ ์ถœ๋ฐœํ•˜์—ฌ, ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ˆซ์ž๋ฅผ ์ง€์šด๋‹ค.
        for (let j = 2*i; j<=n; j+=i) {
            arr[j] = -1;
        }
    }
    
    // ํ•ฉ์„ฑ์ˆ˜์˜ ๊ฐฏ์ˆ˜๋Š” -1์„ ๊ฐ’์œผ๋กœ ๊ฐ€์ง€๋Š” ์›์†Œ์˜ ๊ฐฏ์ˆ˜๋ž‘ ๋™์ผํ•˜๋‹ค.
    return arr.filter(e => e == -1).length;
}

+ Recent posts