[백준 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