본문 바로가기
Algorithm (PS)/프로그래머스

[프로그래머스 Level 1] 정수 내림차순으로 배치하기 [Java]

by 태크민 2023. 8. 11.

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12933

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

알고리즘

문자열

 

풀이

1. n에 대한 문자열을 만들고, Long 배열을 만들어서  하나씩 넣어준다

2. 배열을 역순으로 정렬한다.

3. 다시 String으로 만들고 Long으로 변환해서 출력

 

코드

import java.util.*;    
import java.util.Arrays;
    class Solution {
        public long solution(long n) {
            StringBuilder sb = new StringBuilder();
            String s = ""+n;
            Long[] nums = new Long[s.length()];
            for(int i=0; i<s.length(); i++)
                nums[i] = Long.valueOf(s.charAt(i)-'0');
            
            Arrays.sort(nums, Collections.reverseOrder());

            for(int i=0; i<s.length(); i++)
                sb.append(""+nums[i]);
        

            long answer = Long.parseLong(sb.toString());
            return answer;
        }
    }

 

 

다른사람 풀이

import java.util.*;
 
class Solution {
  public long solution(long n) {
        String[] list = String.valueOf(n).split("");
        Arrays.sort(list);
 
        StringBuilder sb = new StringBuilder();
        for (String aList : list) sb.append(aList);
 
        return Long.parseLong(sb.reverse().toString());
  }
}

String을 split하여 String 배열 생성 및 정렬하고 StringBuilder를 활용하여 reverse하는 풀이가 더 간단한 것 같다.