본문 바로가기
IT/알고리즘(Algorithm)

[JAVA]백준 1427번 문제 풀이

by 공부하는개미 2022. 11. 21.

# 문제 출제 사이트

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

 

1427번: 소트인사이드

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

 

# 문제

배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.

 

# 입력

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

 

# 출력

첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.

 

 

# 제출한 소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;

public class Main {
    public static void main(String[] args) throws IOException {
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      String inputStr = br.readLine();


      Integer[] numArr = new Integer[inputStr.length()];
      for ( int i = 0; i < inputStr.length(); i++ ) {
          numArr[i] = Integer.parseInt(String.valueOf(inputStr.charAt(i)));
      }

      Arrays.sort(numArr, Collections.reverseOrder());

      StringBuilder sb = new StringBuilder();
      for ( int num : numArr ) {
          sb.append(num);
      }

      System.out.println(sb);
    }
}
  • Arrays 클래스의 sort 함수를 사용했습니다(내림차순 정렬).
  • StringBuilder 에 정수형 배열의 numArr 의 값을 넣어 출력했습니다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;

public class Main {
    public static void main(String[] args) throws IOException {
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      String inputStr = br.readLine();


      Integer[] numArr = new Integer[inputStr.length()];
      for ( int i = 0; i < inputStr.length(); i++ ) {
          numArr[i] = Integer.parseInt(String.valueOf(inputStr.charAt(i)));
      }

      Arrays.sort(numArr, Collections.reverseOrder());

        for ( int num : numArr ) {
            System.out.printf("%d", num);
        }
    }
}
  • 굳이 StringBuilder 를 사용할 필요가 없다고 판단되어 printf 를 사용했습니다.
반응형