개발자 미니민의 개발스터디

[백준 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();
}
}

 

 

 

블로그의 프로필 사진

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기