[백준 JAVA] 11653번 풀이 - 소인수분해
by mini_min
처음 풀이
처음에는 while 문을 활용해서 n이 0이 아닐 때는 계~속 돌도록 코드를 짰는데
채점 결과 시간초과가 났다...^^
누가봐도 while 때문인 것 같아서 while 을 빼고 어떻게 수정할지 고민하다가
i 값을 초기화하고 나뉜 n을 계속 돌리면 해결되는 문제 발견!
기존에 while 을 사용했을 때
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
while ( n != 0 )
{
for ( int i = 2; i <= n; i++ )
{
if ( n % i == 0 )
{
n = ( n / i );
System.out.println(i);
i = 1;
}
}
}
sc.close();
변경
시간 초과 해결!
import java.util.Scanner;
/**
* 소인수분해
* 11653
* n이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.
*
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for ( int i = 2; i <= n; i++ )
{
if ( n % i == 0 )
{
n = ( n / i );
System.out.println(i);
i = 1;
}
}
sc.close();
}
}
'매일매일 알고리즘 공부' 카테고리의 다른 글
[백준 JAVA] 15894번 풀이 - 수학은 체육과목 입니다. (0) | 2023.07.10 |
---|---|
[백준 JAVA] 3009번 풀이 - 네 번째 점 (0) | 2023.07.10 |
[백준 JAVA] 2581번 풀이 - 소수 (0) | 2023.07.06 |
[백준 JAVA] 1978번 풀이 - 소수 찾기 (0) | 2023.07.05 |
[백준 JAVA] 9506번 풀이 - 약수들의 합 (0) | 2023.07.04 |
블로그의 정보
개발자 미니민의 개발로그
mini_min