알고리즘 풀이 방법입니다.
문제(Problem) -> 생각(Think) -> 해결책(Solution) -> 리뷰(Review) 를 통해서 정리해서 작성합니다.
Problem📄

https://level.goorm.io/exam/43105/%EC%86%8C%EC%9D%B8%EC%88%98-%EB%B6%84%ED%95%B4/quiz/1

 

구름LEVEL

코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입니다. 기업에서 선호하는 C, C++, 파이썬(Python), 자바(Java), 자바스크립트(Javascript) 이

level.goorm.io


Think🤔

while문을 이용해서 for문을 돌려서 만약에 나눠지면 break로 끝내서 2를 다시 나눌 수 있게 만들어 줘야한다.

반복문 안에 반복문이 들어가서 시간 복잡도가 좀 증가하는 것 같다.

하지만 다른 방법은 생각이 나지 않는다!


Solution✍
import java.io.*;
import java.util.ArrayList;

class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int input = Integer.parseInt(br.readLine());
		
		ArrayList arr = new ArrayList(); // 그냥 배열로 만들면 크기를 지정해야 되는데 딱 지정할 수 없음
		
		while(input > 1){
			for(int i=2; i<=input; i++){ // 17이면 17로 나눠야 하기 때문에 <= 까지
				if(input % i == 0){
					arr.add(i);
					input /= i;
					break; // 끝내야함 
				}
			}	
		}
		
		System.out.print(arr.get(0));
		for(int i=1; i<arr.size(); i++){
			System.out.printf(" %d",arr.get(i));
		}
	}
}
import java.io.*;
import java.util.ArrayList;

class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int input = Integer.parseInt(br.readLine());
		
		StringBuilder sb = new StringBuilder();
		
		while(input > 1){
			for(int i=2; i<=input; i++){ // 17이면 17로 나눠야 하기 때문에 <= 까지
				if(input % i == 0){
					sb.append(i+" ");
					input /= i;
					break; // 끝내야함 
				}
			}	
		}
		
		System.out.print(sb.toString().trim());
	}
}

Review🤩

특이하게 출력이 마지막에는 띄어쓰기가 안돼서 맞지 않는다고 했다.

그래서 첫번째 값은 그냥 바로 찍어주고

반복문을 printf를 이용해서 앞에 띄어쓰기 한 후 값이 나오게 만들어줬다.

 

StringBuilder 

StringBuilder로 하니 바로 출력할 수 있고 좀 더 깔끔하게 되었다. trim()메서드 좋다!


 

 

'Algorithm' 카테고리의 다른 글

[인프런] 알고리즘 Array , Two pointers  (0) 2021.12.27
[인프런] 알고리즘 String ! 문자 변환  (0) 2021.12.26
[구름] 구구단+  (0) 2021.12.26
[구름] 홀수의 합  (0) 2021.12.26
[구름] 완전제곱수 (2레벨 , 3레벨)  (0) 2021.12.25

+ Recent posts