juuuding

[백준] #1427 소트인사이드 본문

알고리즘/백준 문제 풀이

[백준] #1427 소트인사이드

jiuuu 2023. 3. 25. 15:39

 문제

 

[문제 링크]

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

 

1427번: 소트인사이드

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

www.acmicpc.net

 

[문제]

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

 

[입력]

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

 

[출력]

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

 

[예제 입출력]

 

[예제 입력 1 복사]

2143

[예제 출력 1 복사]

4321

 

[예제 입력 2 복사]

999998999

[예제 출력 2 복사]

999999998

 

[예제 입력 3 복사]

61423

[예제 출력 3 복사]

64321

 

[예제 입력 4 복사]

500613009

[예제 출력 4 복사]

965310000
 

 

 

 풀이 방법

 

[변수]

n : 입력 받을 숫자

a : n 값을 저장하기 위한 변수

x : n의 자리수

 

 

[풀이]

Step1. n을 입력받아 while 무한루프로 n의 자리수를 계산한다.

Step2. list에 n의 1의 자리수부터 추가한다.

Step3. Comparator을 사용하여 list를 내림차순으로 정렬한다.

Step4. 정렬된 list의 요소를 하나씩 출력한다.

 

 

[+]

Comparator

Comparator은 인터페이스로 객체를 비교할 수 있도록 만들게 하고, 이것을 사용하기 위해서는 인터페이스나 선언된 메소드를 반드시 구현해야한다. Comparator은 두 매개변수 객체를 비교하는 것인데, 기본 정렬 기준 외에 다른 기준으로 정렬하고자 할 때 사용한다. 즉, compare 메소드를 사용해서 여러가지 특별한 조건을 가진 정렬을 구현하기 위한 인터페이스이다. 예를 들어 배열을 오름차순/ 내림차순으로 정렬할 수 있는데, 이때 각각 naturalOrder/reverseOrder을 사용하여 기능을 구현할 수 있다. 

 

 

 

 작성 코드

import java.lang.*;
import java.util.*;

public class SortInside {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        List<Integer> list = new ArrayList<Integer>();
        int n = sc.nextInt();   
        int a = n;  
        int x = 1;  //n의 자리수
        int i;  

        //n의 자리수 계산
        while (true) {
            n /= 10;
            x++;
            if (n==0) break;
        }
        n=a;
        //list에 1의 자리부터 추가
        for(i=1; i<x; i++){
            list.add(n%10);
            n /= 10;
        }
        //내림차순으로 정렬
        list.sort(Comparator.reverseOrder());

        //정렬된 list 하나씩 출력 
        for(i=1; i<x; i++){
            System.out.print(list.get(i-1));
        }

    }
}

'알고리즘 > 백준 문제 풀이' 카테고리의 다른 글

[백준] #2630 색종이 만들기  (0) 2023.03.29
[백준] #1026 보물  (0) 2023.03.22
[백준] #2564 경비원  (0) 2023.03.19
[백준] #2164 카드2  (0) 2023.03.18
[백준] #1236 성 지키기  (0) 2023.03.17