본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - 정수 내림차순으로 배치하기

by nam_ji 2024. 1. 15.

정수 내림차순으로 배치하기

문제

  • 정수 n이 매개변수로 주어집니다.
  • n의 각 자릿수를 큰 수부터 작은 수 순으로 정렬한 새로운 정수를 출력하는 문제입니다.


테스트(이클립스)

  • Arrays.sort를 정수 n을 valueOf메서드를 이용하여 문자열로 변환하여 문자열 배열에 담습니다.
  • 이때, 값을 하나씩 비교해야 하기 때문에 split() 메서드를 이용하여 문자를 하나씩 쪼개서 값을 담습니다.
  • 이 값을 Arrays.sort() 메서드를 이용하여 문자열 배열에 담은 값들을 오름차순 정렬합니다.
  • 문자열을 더해주는 StringBuilder를 사용하기 위해 객체를 생성하고
  • 문자열 배열 0번째 인덱스부터 마지막까지 append 메서드를 이용하여 하나씩 합칩니다.
  • 마지막으로 reverse 메서드를 이용하여 내림차순으로 변경하고 toString() 메서드를 이용해 문자열로 변환합니다.
  • 리턴해야 하는 값은 long 타입이기 때문에 Long.parseLong을 이용하여 문자열을 long 타입으로 형변환을 해줍니다.
package com.namji.codingtest.level0;

import java.util.Arrays;
import java.util.Collection;

public class Sort_by_Integer_in_DescendingOrder {
	public static void main(String[] args) {
		/*
		 * 정수 n이 매개변수로 주어집니다.
		 * n의 각 자릿수를 큰 수부터 작은 수로 정렬한 값을 출력하는 문제입니다.
		 * 118372 > 873211
		 */
		long n = 118372;
		String[] str = String.valueOf(n).split("");
		Arrays.sort(str);
		
		StringBuilder sb = new StringBuilder();
		for (String strList : str) {
			sb.append(strList);
		}
	
		System.out.println(Long.parseLong(sb.reverse().toString()));
	}
}


프로그래머스 코드

import java.util.*;

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