[java] 백준 11653번 소인수분해알고리즘/백준2021. 7. 24. 12:15
Table of Contents
문제 조건
1. 소인수 분해 결과를 한 줄에 하나씩 오름차순으로 출력 (1,2,3 ~~)
2. N이 1인 경우 아무것도 출력 안함
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
if(N == 1) {
sc.close();
}
for(int i=2; i<=N; i++){
while(N % i == 0) {
N = N / i;
System.out.println(i);
}
}
}
}
조건문으로 N이 1일 때 sc.close()로 자원 반환을 시켜버리도록 구현하였다.
두 번째 반복문인 while문을 살펴보게 되면 조건이 N % i == 0이다.
즉, N에 12가 들어왔다고 가정하자. i는 첫 번째 반복문인 for문에서 2로 초기화가 되어있기 때문에 12 % 2 == 0, true이다.
N = N / i 이기 때문에 N은 다시 6으로 변경이 되고 쭉 나누어 떨어졌을 때 N에 3이 남게 된다.
N % 2 == 0 이 false가 되면서 while문을 탈출하게 되며 첫 번째 반복문인 for문에서 i=3이 되어서 while문에 있는 조건에 들어가서 N(3) % 3 == 0 이어서 마지막으로 3을 출력하고 while문 탈출, for문 탈출하게 되는 것이다.
'알고리즘 > 백준' 카테고리의 다른 글
[java] 백준 2420번 사파리월드 (4) | 2021.07.25 |
---|---|
[java] 백준 2581번 소수 (0) | 2021.07.25 |
[java] 백준 4153번 직각삼각형 (2) | 2021.07.23 |
[java] 백준 1978번 소수 찾기 (2) | 2021.07.22 |
[java] 백준 10757번 큰 수 A+B (2) | 2021.07.21 |
@펄찌 :: Pearl's Story
펄의 일상이 궁금한 사람 요기~
즐거운 하루 되셨으면 좋겠습니다😊