백준 알고리즘(코딩테스트 공부)

소트인사이드

Dev.gunnuuu 2024. 9. 18. 17:37

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

문제

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

입력

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

출력

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

예제 입력 1 

2143

예제 출력 1 

4321

예제 입력 2 

999998999

예제 출력 2 

999999998

 

풀이

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String num = scanner.nextLine();
        List<Integer> list = new ArrayList<>();
        
        String[] nums = num.split("");
        for(String c : nums){
            list.add(Integer.parseInt(c));
        }
        Collections.sort(list, Collections.reverseOrder());
        
        StringBuilder sb = new StringBuilder();
        for(int i : list){
            sb.append(i);
        }
        System.out.println(sb.toString());
    }
}

 

Scanner로 받은 숫자를 내림차순으로 정렬한뒤 다시 출력해주는 문제였다. 우선 정렬을 하기 위해서 각 자릿수를 배열이나 리스트에 저장 후에 정렬해야하므로 문자열로 받은 뒤에 split() 함수를 사용해서 배열에 각 자릿수를 저장해주었다. 그 뒤 각 배열의 원소들을 Integer.parstInt 메소드로 정수형으로 변경후에 생성한 Arraylist에 각각 저장해 주었다. 이 list를 Collections.sort 그 중 reverseOrder()를 사용하여 내림차순으로 정해준 뒤 StringBuilder를 사용하여 정렬된 순서대로 각 원소들을 append 해주어 하나의 문자열로 합쳐주고 출력하여 구현하였다.

'백준 알고리즘(코딩테스트 공부)' 카테고리의 다른 글

그룹 단어 체커  (0) 2024.09.18
카드1  (1) 2024.09.18
영화감독 숌  (1) 2024.09.18
단어 나누기  (0) 2024.09.18
백준 2751번: 수 정렬하기 2 (C언어)  (1) 2024.02.29