본문 바로가기

Coding Test/Step13. 정렬

[Java] 6단계. 소트인사이드 [1427번]

https://www.acmicpc.net/problem/1427

  • 예제 입력1
2143
  • 예제 출력1
4321
  • 예제 입력2
999998999
  • 예제 출력2
999999998
  • 예제 입력3
61423
  • 예제 출력3
64321
  • 예제 입력4
500613009
  • 예제 출력4
965310000

  • 문제 접근
    • 입력
      • 정렬하려는 수 N (N ≤ 1,000,000,000)
    • 출력
      • 자리수를 내림차순 정렬
  • 문제 해결
    • N의 수가 10억이긴 하지만 이것은 String으로 실질적으로 10억더라도 10자리밖에 되지 않음
    • 문자열을 char 배열로 바꿔서 정렬한 뒤 맨 뒤에서부터 출력
  • 기존 풀이 [메모리 : 14244 KB / 시간 : 96 ms]
public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringBuilder sb = new StringBuilder();

    char[] arr = br.readLine().toCharArray();

    Arrays.sort(arr);

    for(int i = arr.length - 1; i >= 0; i--)
        sb.append(arr[i]);

    System.out.println(sb);
}