๋ฌธ์ ์ค๋ช
์์ธ์๋ถํด๋ ์ด๋ค ์๋ฅผ ์์๋ค์ ๊ณฑ์ผ๋ก ํํํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด 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;
}
}
'๐ ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค & ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SWEA][JAVA] ์ํ๋ฒณ ๊ณต๋ถ (0) | 2022.11.01 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค][JAVA]Level 1 : ๋ชจ์๊ณ ์ฌ (์์ ํ์) (0) | 2022.11.01 |
[ํ๋ก๊ทธ๋๋จธ์ค][JAVA]Level 0 : ์๋ผ์ ๋ฐฐ์ด๋ก ์ ์ฅํ๊ธฐ (0) | 2022.10.31 |
[ํ๋ก๊ทธ๋๋จธ์ค][JAVA]Level 0 : ๋ฐฐ์ด ํ์ ์ํค๊ธฐ (0) | 2022.10.31 |
[SWEA][JAVA] ํ์๋ง ๋ํ๊ธฐ (0) | 2022.10.29 |