juuuding
[백준] #1427 소트인사이드 본문
문제
[문제 링크]
https://www.acmicpc.net/problem/1427
[문제]
배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.
[입력]
첫째 줄에 정렬하려고 하는 수 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 |