Deep_Dev

๋ฌธ์ œ ์„ค๋ช…

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

 

 

 
์ œํ•œ์‚ฌํ•ญ
  • 2 ≤ n ≤ 10,000

 

 

์ž…์ถœ๋ ฅ ์˜ˆnresult
12 [2, 3]
17 [17]
420 [2, 3, 5, 7]

 

 


์†Œ์ธ์ˆ˜๋ถ„ํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ 2๋ถ€ํ„ฐ N๊นŒ์ง€ ๋ชจ๋“  ์ˆ˜๋ฅผ ๋‚˜๋ˆ ๋ณด๋ฉด์„œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ผ ๊ฒฝ์šฐ ๊ทธ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ( 1์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๋‹น์—ฐํžˆ ์ œ์™ธ )

 

for(int i=2; i<=N; i++){
	while(N%i==0){
    	print(i);
        N/=i;
    }
}

์ด์™€ ๊ฐ™์ด ๊ตฌํ•ด๋„ ์ƒ๊ด€์—†์ง€๋งŒ, ์กฐ๊ธˆ ๋” ํšจ์œจ์ ์œผ๋กœ ์งค ์ˆ˜ ์žˆ๋‹ค.

์–ด๋–ค NDใ…ฃ ๋‘๊ฐœ ์ด์ƒ ๊ณฑ์…ˆ(์ธ์ˆ˜)๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์„๋•Œ ์ธ์ˆ˜ ์ค‘ ํ•œ ๊ฐœ ์ด์ƒ์€ ๋ฐ˜๋“œ์‹œ √N๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ฆ‰, ๋ฐ˜๋ณต๋ฌธ์˜ ๋ฒ”์œ„๋ฅผ √N๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์ด ๋•Œ ์ค‘์š”ํ•œ ์ ์€, N/=i ๋กœ ๋‚˜๋ˆ„๊ณ  ๋‚จ์€ ์ตœ์ข… N์ด ๋‘ ๊ฐ€์ง€ ์ผ€์ด์Šค๋กœ ๋‚˜๋‰œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

์˜ˆ๋กœ๋“ค์–ด N=16์ด ์ž…๋ ฅ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.

๋ฐ˜๋ณต๋ฌธ์œผ๋กœ √N๊นŒ์ง€ ํ•œ๋‹ค๊ณ  ํ•˜๋ฉด 4๊นŒ์ง€ ๋ฐ˜๋ณต์„ ํ•  ๊ฒƒ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ฒ˜์Œ 2์—์„œ while๋ฌธ์˜ ์กฐ๊ฑด์‹์„ ๋งŒ์กฑ(16%2==0)ํ•˜๋ฉด์„œ 2๋ฅผ ์ถœ๋ ฅํ•œ ๋‹ค์Œ N์„ 2๋กœ ๋‚˜๋ˆ„์–ด 8์ด ๋˜๊ณ , ๋‹ค์‹œ 8%2==0์„ ๋งŒ์กฑํ•˜๋ฏ€๋กœ ๋˜ ๋‹ค์‹œ 2๋ฅผ ์ถœ๋ ฅํ•œ๋’ค N์„ 2๋กœ ๋‚˜๋ˆ„์–ด 4๊ฐ€ ๋˜๊ณ  ์ด๋Ÿฐ์‹์œผ๋กœ ์ญ‰ ๊ฐ€๋‹ค๊ฐ€ ๋งˆ์ง€๋ง‰์— 2%2==0์„ ๋งŒ์กฑํ•˜๋ฉด์„œ 2๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ถœ๋ ฅํ•œ ๋’ค, N์„ 2๋กœ ๋‚˜๋ˆ„์–ด 1์ด ๋˜๊ณ  while๋ฌธ์„ ์ข…๋ฃŒํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  1์ด ์ธ์ˆ˜๋ถ„ํ•ด ๋˜๋Š” ์ผ์€ ์—†์œผ๋ฏ€๋กœ for๋ฌธ ๋˜ํ•œ ์ข…๋ฃŒ๋œ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  for๋ฌธ์„ ์ข…๋ฃŒํ•˜๊ณ  N์ด 1์ด ์•„๋‹ˆ๋ผ๋ฉด N์€ ์†Œ์ˆ˜์ด์ž ์ธ์ˆ˜์ธ ๊ฒƒ์ด ๋ถ„๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 1์ด ์•„๋‹ˆ๋ผ๋ฉด ํ•œ๋ฒˆ ๋” ์ถœ๋ ฅํ•ด์ฃผ๋Š” ์กฐ๊ฑด๋ฌธ์„ ๋‹ฌ์•„์ฃผ๋ฉด ์™„์„ฑ์ด๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์™„์„ฑ๋œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

for(int i=2; i<=Math.rqrt(N); i++){
	while(N%i==0){
    	print(i);
        N/=i;
    }
}
if(N!=1) print(N);

 

 

 


์ข€ ๋”๋Ÿฝ๊ฒŒ ํ’€์–ด์กŒ๋‹ค..

import java.util.ArrayList;
public class Solution {
    public int[] solution(int n) {
        ArrayList<Integer> list=new ArrayList<>();
        ArrayList<Integer> list2=new ArrayList<>();
        for(int i=2; i<=Math.sqrt(n); i++){
            while(n%i==0){
                list.add(i);
                n/=i;
            }
        }
        if(n!=1) list.add(n);
        for(int i=0; i<list.size(); i++){
            if(!list2.contains(list.get(i)))
                list2.add(list.get(i));
        }
        int[] answer=new int[list2.size()];
        for(int i=0; i<list2.size(); i++){
            answer[i]=list2.get(i);
        }
        return answer;
    }
}