풀이방법
사용된 것:
정렬
2022.04.27
이 문제도 예전에 풀었던 문제인데 정리글을 적지 않았어서 지금 적는다.
수가 하나 입력값으로 주어진다.
그 수의 각 자리에 있는 숫자들을 내림차순으로 정렬하여 화면에 출력하는 문제이다.
이 문제는 두 가지 방법으로 풀 수 있다.
첫째는 입력값을 하나의 정수로 받아서 나머지 연산을 이용해 자릿수를 분리하는 방법,
둘째는 입력값을 charArray로 받아서 각각의 문자를 정수로 변환하는 방법이다.
아래 코드는 두 번째 방법을 사용한 정답코드이다.
먼저 주어진 각 자리수의 숫자들을 정수 데이터타입으로 변환하여 저장하였다.
나는 다음과 같이 하였다.
입력값이 띄어쓰기 없는 String으로 주어지므로, 일단 입력값을 char 배열로 변환한다.
배열의 길이는 입력된 수의 자리수와 같으며, 각 요소에는 수를 이루는 숫자 한 글자씩이 저장된다.
그 다음 이 char 배열의 각각의 요소들을 모두 아스키 코드로 변환하거나, 아스키코드에서 0의 아스키 코드를 빼 정수로 변환하여, 정수 배열에 저장한다.
이렇게 얻은 정수 배열을 내림차순으로 정렬하기만 하면 문제가 해결된다.
나는 헷갈리지 않게 하기 위해, 아스키 코드에서 0의 아스키 코드를 빼어 정확한 값의 정수로 변환했다.
코드
Java(2022.04.27)
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{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//입력값을 char 배열로 변환
char[] input = br.readLine().toCharArray();
Integer[] arr = new Integer[input.length];
//각 문자를 정수로 변환하여 정수 배열에 하나씩 저장
for(int i = 0; i<input.length; i++) {
arr[i] = input[i]-'0';
}
//정수 배열을 내림차순 정렬
Arrays.sort(arr, Collections.reverseOrder());
//정답 출력
for(int i : arr) System.out.print(i);
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
#10798 : 세로읽기 (0) | 2023.03.19 |
---|---|
#2490 : 윷놀이 (0) | 2023.03.19 |
#2587 : 대표값2 (0) | 2023.03.12 |
#10804 : 카드 역배치 (0) | 2023.03.12 |
#2884 : 알람 시계 (0) | 2023.03.08 |