๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[Java] - ์†Œ์ˆ˜ ์ฐพ๊ธฐ

by ์ฃผ๋ฐœ2 2020. 3. 7.
๋ฐ˜์‘ํ˜•

https://programmers.co.kr/learn/courses/30/lessons/12921

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์†Œ์ˆ˜ ์ฐพ๊ธฐ | ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

1๋ถ€ํ„ฐ ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž n ์‚ฌ์ด์— ์žˆ๋Š” ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ๋งŒ๋“ค์–ด ๋ณด์„ธ์š”. ์†Œ์ˆ˜๋Š” 1๊ณผ ์ž๊ธฐ ์ž์‹ ์œผ๋กœ๋งŒ ๋‚˜๋ˆ„์–ด์ง€๋Š” ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. (1์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.) ์ œํ•œ ์กฐ๊ฑด n์€ 2์ด์ƒ 1000000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ž…์ถœ๋ ฅ ์˜ˆ n result 10 4 5 3 ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช… ์ž…์ถœ๋ ฅ ์˜ˆ #1 1๋ถ€ํ„ฐ 10 ์‚ฌ์ด์˜ ์†Œ์ˆ˜๋Š” [2,3,5,7] 4๊ฐœ๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ 4๋ฅผ ๋ฐ˜ํ™˜ ์ž…์ถœ๋ ฅ ์˜ˆ #2 1๋ถ€ํ„ฐ 5 ์‚ฌ์ด์˜ ์†Œ์ˆ˜๋Š” [2,3,5] 3๊ฐœ๊ฐ€ ์กด์žฌ

programmers.co.kr

์ฝ”๋“œ

class Solution {
	  public int solution(int n) {
	      int answer = 1;
          for(int i=3; i<=n; i++){
              boolean flag = true;
              for(int j=2; j<=Math.sqrt(i); j++){
                  if(i%j == 0){
                      flag = false;
                      break;
                  }
              }
              if(flag)      answer ++;
          }
	      return answer;
	  }
	}

ํ’€์ด

 

๊ธฐ๋ณธ์ ์ธ ์†Œ์ˆ˜ ์ฐพ๊ธฐ ์ฝ”๋“œ.

2 ~ i์˜ ์ œ๊ณฑ๊ทผ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉฐ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋ฉด ์†Œ์ˆ˜ X

 

 

์ฝ”๋“œ

class Solution {
	  public int solution(int n) {
	      int answer = 0;
          boolean[] check = new boolean[n+1];
          check[0] = check[1] = false;
          
          for(int i=2; i<=n; i++)    check[i] = true;
          
          // i์˜ ๋ฐฐ์ˆ˜๋“ค ์ „๋ถ€ ๊ฑฐ๋ฅด๊ธฐ(์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ)
          for(int i=2; i<=Math.sqrt(n); i++){
              if(!check[i])     continue;   // ์ด๋ฏธ ๊ฑธ๋Ÿฌ์ง„ ์ˆ˜์˜ ๋ฐฐ์ˆ˜ - pass
              for(int j=2; i*j<=n; j++)  check[i*j] = false;
          }
          
          for(int i=2; i<=n; i++)
              if(check[i])  answer ++;
	      return answer;
	  }
	}

ํ’€์ด

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ ์†Œ์ˆ˜ ์ฐพ๊ธฐ.

i์˜ ๋ฐฐ์ˆ˜๋“ค์€ ์ „๋ถ€ ๊ฑฐ๋ฅธ ํ›„ ํŒ๋ณ„.

์ž์„ธํ•œ ํ’€์ด - ์ฐธ๊ณ 

 

๊ธฐ๋ณธ์ ์ธ ์†Œ์ˆ˜ ์ฐพ๊ธฐ ์ฝ”๋“œ

 

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ์†Œ์ˆ˜ ์ฐพ๊ธฐ ์ฝ”๋“œ

ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ์—์„œ ๊ฑฐ์˜ 10๋ฐฐ๊ฐ€๋Ÿ‰ ์ฐจ์ด๊ฐ€ ๋‚œ๋‹ค.

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€