๊ธฐ๋ก๋ฐฉ

Lv.1 : ์†Œ์ˆ˜ ์ฐพ๊ธฐ ๋ณธ๋ฌธ

CodingTest/Java

Lv.1 : ์†Œ์ˆ˜ ์ฐพ๊ธฐ

Soom_1n 2022. 8. 24. 21:43

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


 


๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • 1๋ถ€ํ„ฐ ์ฃผ์–ด์ง„ ์ˆ˜ ์‚ฌ์ด์˜ ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

class Solution {
      public int solution(int n) {
        int prime[] = new int[n+1];
        int answer = 0;

        for(int i = 2; i <= n; i++){ // ์†Œ์ˆ˜ ์ฐพ๊ธฐ
            if(prime[i] == 0) {
                int j = 1;
                while (i * ++j <= n) {
                    prime[i * j] = 1;
                }
                answer++;
            }
        }
        return answer;
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • 1์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋‹ˆ ์ œ์™ธํ•˜๊ณ , 1๋ถ€ํ„ฐ n๊นŒ์ง€ i๋ฅผ ๋Š˜๋ ค๊ฐ€๋ฉฐ ์†Œ์ˆ˜์ธ์ง€ ํŒ๋ณ„ํ•œ๋‹ค.
    • nํฌ๊ธฐ๋กœ ๋งŒ๋“  prime ๋ฐฐ์—ด์˜ ๊ฐ’์ด 0์ด๋ฉด ์†Œ์ˆ˜๋ผ๋Š” ๊ฒƒ์ด๋‹ค.
    • prime ๋ฐฐ์—ด์—์„œ i์˜ ๋ฐฐ์ˆ˜๋“ค์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ 1์„ ๋„ฃ์–ด์ค€๋‹ค.
    • 0 ๊ฐ’๋งŒํผ ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ผ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ๋‚˜๋ˆ ์ง€๋Š” ์ˆ˜๋ฅผ ์ฐพ์œผ๋ฉด ๋ฐ˜๋ณต ํšŸ์ˆ˜๊ฐ€ ๋งŽ์•„์ง€๋ฏ€๋กœ ๋ฐฐ์—ด์—์„œ ๋ฐฐ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๋Š” ์‹์œผ๋กœ ์ ์ฐจ ๋ฆฌ์ŠคํŠธ์—์„œ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹Œ ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค.
  • ์ง€๊ธˆ ๋ณด๋‹ˆ prime ๋ฐฐ์—ด์€ intํ˜• ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋ผ booleanํ˜•์œผ๋กœ ํ–ˆ์œผ๋ฉด ์ข‹์•˜์„ ๊ฒƒ ๊ฐ™๋‹ค.
  • ์ด์ „์— ํ’€์–ด๋ดค๋˜ ๋ฌธ์ œ์ธ๋ฐ ๋ฌธ์ œ์ ์„ ์กฐ๊ธˆ ๊ฐœ์„ ํ–ˆ๋‹ค.
    • prime์˜ ๊ฐ’์— 1~n๊ฐ’์„ ๋„ฃ์–ด์ฃผ๊ณ  ๋งˆ์ง€๋ง‰์— 0์ด ์•„๋‹Œ ๊ฐ’๋“œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์…Œ๋Š”๋ฐ, ๊ฐœ์„ ํ•ด์„œ ์ธ๋ฑ์Šค i๋กœ ๊ฐ„๋‹จํžˆ ๊ณ„์‚ฐํ–ˆ๋‹ค.

728x90