오늘 문제는 즐겁게 풀었다 이런 짧은 문제들같은 경우에는 전에 비해서 얼마 안걸리는것같다. 앞으로도 꾸준히 풀어서 조금더 실력을 늘렸으면 좋겠다.
내가 생각했을때 문제에서 원하는부분
함수 solution은 정수 n을 매개변수로 입력받음
n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴
예를들어 n이 118372면 873211을 리턴하면된다.
내가 이 문제를 보고 생각해본 부분
n을 입력받고.
n을 문자열로 변환하고 자릿수별로 분리하여 배열에 저장한다.
배열을 높은 순서대로(내림차순) 정렬한다.
정렬된 배열을 다시 문자열로 변환하여 return 한다.
코드로 구현
import java.util.Arrays;
import java.util.Collections;
class Solution {
public long solution(long n) {
String[] array = String.valueOf(n).split("");
Arrays.sort(array, Collections.reverseOrder());
StringBuilder sb = new StringBuilder();
for(String s : array) {
sb.append(s);
}
return Long.parseLong(sb.toString());
}
}
시간 복잡도는 O(nlogn)
장점
구현이 쉽다
자료구조(배열, 문자열)를 활용한 효율적 해결할 수 있다.
단점
정수를 문자열로 변환하는 과정에서 성능 저하 발생할 수 있다.
배열 정렬 시 추가 메모리 사용한다.
오늘같은 경우에도 다행히 간단한 문제를 풀었다. 근데 코드를 조금더 깔끔하게 작성할 방법을 조금더 생각해봐야할것같다. 어떤 부분이 성능이 저하가 발생할지 잘모르고 코드를 작성하다보니깐 거기 까지는 생각을 못했던갓같다.