프로그래머스 정수 내림차순으로 배치하기 (99클럽 코딩테스트 24일차 TIL)

KIMYEONGJUN·2024년 4월 20일
0
post-thumbnail

목표

오늘 문제는 즐겁게 풀었다 이런 짧은 문제들같은 경우에는 전에 비해서 얼마 안걸리는것같다. 앞으로도 꾸준히 풀어서 조금더 실력을 늘렸으면 좋겠다.

문제

내가 생각했을때 문제에서 원하는부분

함수 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)

장점
구현이 쉽다
자료구조(배열, 문자열)를 활용한 효율적 해결할 수 있다.

단점
정수를 문자열로 변환하는 과정에서 성능 저하 발생할 수 있다.
배열 정렬 시 추가 메모리 사용한다.

마무리

오늘같은 경우에도 다행히 간단한 문제를 풀었다. 근데 코드를 조금더 깔끔하게 작성할 방법을 조금더 생각해봐야할것같다. 어떤 부분이 성능이 저하가 발생할지 잘모르고 코드를 작성하다보니깐 거기 까지는 생각을 못했던갓같다.

profile
Junior backend developer

0개의 댓글