๐Ÿ Algorithm/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Programmers] ์†Œ์ธ์ˆ˜๋ถ„ํ•ด(์ž๋ฐ”)

Dhey 2023. 4. 1. 02:55
๋ฐ˜์‘ํ˜•

โžฐ๋ฌธ์ œ

์†Œ์ธ์ˆ˜๋ถ„ํ•ด๋ž€ ์–ด๋–ค ์ˆ˜๋ฅผ ์†Œ์ˆ˜๋“ค์˜ ๊ณฑ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 12๋ฅผ ์†Œ์ธ์ˆ˜ ๋ถ„ํ•ดํ•˜๋ฉด 2 * 2 * 3 ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 12์˜ ์†Œ์ธ์ˆ˜๋Š” 2์™€ 3์ž…๋‹ˆ๋‹ค. ์ž์—ฐ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ n์˜ ์†Œ์ธ์ˆ˜๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๋‹ด์€ ๋ฐฐ์—ด์„ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

 

์ œํ•œ์‚ฌํ•ญ

   -  2 ≤ n ≤ 10,000

 


์ž…์ถœ๋ ฅ ์˜ˆ

n result
12 [2, 3]
17 [17]
420 [2, 3, 5, 7]

 


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

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

  • 12๋ฅผ ์†Œ์ธ์ˆ˜๋ถ„ํ•ดํ•˜๋ฉด 2 * 2 * 3 ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ [2, 3]์„ returnํ•ฉ๋‹ˆ๋‹ค.

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

  • 17์€ ์†Œ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ [17]์„ return ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

  • 420์„ ์†Œ์ธ์ˆ˜๋ถ„ํ•ดํ•˜๋ฉด 2 * 2 * 3 * 5 * 7 ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ [2, 3, 5, 7]์„ returnํ•ฉ๋‹ˆ๋‹ค.

 

 

 


 

๐Ÿ’กํ’€์ด

โญ์ œ์ถœ ์ฝ”๋“œ

import java.util.List;
import java.util.ArrayList;

class Solution {
    public int[] solution(int n) {
        List<Integer> list = new ArrayList<>();
        List<Integer> prime = new ArrayList<>();
        int count = 0;
        
        // n์˜ ์•ฝ์ˆ˜ ์ฐพ๊ธฐ
        for(int i=2; i<=n; i++){
            if(n%i == 0){
                list.add(i);
            }            
        }
        
        // n์˜ ์•ฝ์ˆ˜ ์ค‘์—์„œ ์†Œ์ˆ˜ ์ฐพ๊ธฐ
        for(int i=0; i<list.size(); i++){
            for(int j=2; j<=n; j++){
                if(list.get(i)%j == 0){
                    count += 1;
                }
            } 
            // ์•ฝ์ˆ˜๊ฐ€ ์ž์‹  ํ•˜๋‚˜๋ผ๋ฉด
            if(count == 1){
                prime.add(list.get(i));
            }
            count = 0;
        }
        
        int[] answer = new int[prime.size()];
        // list์˜ ๊ฐ’๋“ค์„ answer๋ฐฐ์—ด์— ๋„ฃ์–ด์คŒ
        for(int i=0; i<answer.length; i++){
            answer[i] = prime.get(i);
        }
        return answer;
    }
}

ArrayList๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ž‘์„ฑํ–ˆ๋‹ค.

 

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

1. n์˜ ์•ฝ์ˆ˜๋ฅผ ์ฐพ์•„์„œ list์— ๋„ฃ์–ด์ค€๋‹ค.

2. n์˜ ์•ฝ์ˆ˜ ์ค‘์—์„œ 2 ~ n๊นŒ์ง€ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง„๋‹ค๋ฉด count๋ฅผ 1์ฆ๊ฐ€ ์‹œํ‚จ๋‹ค.

3. count๊ฐ€ 1 ์ด๋ผ๋Š” ๊ฒƒ์€ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆ˜๊ฐ€ ์ž๊ธฐ ์ž์‹  ํ•˜๋‚˜๋ผ๋Š” ๋œป! ์ด๋ฏ€๋กœ ์†Œ์ธ์ˆ˜๋ฅผ ๋‹ด์„ prime ๋ฆฌ์ŠคํŠธ์— ๋„ฃ์–ด์ค€๋‹ค.

4. ์†Œ์ธ์ˆ˜ ๊ฐ’์„ return ํ•  answer ๋ฐฐ์—ด์„ prime์˜ ๊ธธ์ด๋งŒํผ ์ƒ์„ฑํ•œ๋‹ค.

5. ๋ฆฌ์ŠคํŠธ prime์˜ ๊ฐ’์„ answer์— ํ•˜๋‚˜์”ฉ ๋„ฃ์–ด์ฃผ๊ณ , answer์„ return ํ•œ๋‹ค.

 

 

 

๋ฐ˜์‘ํ˜•