소트인사이드
시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 | 128 MB | 66216 | 42477 | 35550 | 64.523% |
문제
배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.
입력
첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.
출력
첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.
예제 입력 1 복사
2143
예제 출력 1 복사
4321
예제 입력 2 복사
999998999
예제 출력 2 복사
999999998
예제 입력 3 복사
61423
예제 출력 3 복사
64321
예제 입력 4 복사
500613009
예제 출력 4 복사
965310000
풀이
Arrays.sort()의 내림차순을 사용하기 위해 Integer 배열로 값을 받았고 (Arrays.sort()의 내림차순은 객체배열만 가능)
정렬후 하나씩 출력해줬다.
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
String input = br.readLine();
Integer[] numberArray = new Integer[input.length()];
for (int i = 0; i < input.length(); i++) {
numberArray[i] = Character.getNumericValue(input.charAt(i));
}
Arrays.sort(numberArray, Comparator.reverseOrder());
for (int number : numberArray) {
bw.write(number+"");
}
bw.flush();
bw.close();
}
}
시간복잡도
O(n)?
다른사람 풀이
1. 문자열을 toCharArray()를 이용하여 문자배열로 바꾼후 오름 차순정렬해서 반대로 출력해서 풀이
다시풀어보기
문자열을 Chracter라는 래퍼클래스타입으로 바꿔주고 정렬
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
String input = br.readLine();
Character[] charArray = new Character[input.length()];
for (int i = 0; i < input.length(); i++) {
charArray[i] = input.charAt(i);
}
Arrays.sort(charArray, Comparator.reverseOrder());
for (char current : charArray) {
bw.write(current+"");
}
bw.flush();
bw.close();
}
}
'자바 > 알고리즘 문제 풀이' 카테고리의 다른 글
백준/11651 좌표 정렬하기 2 (1) | 2022.12.05 |
---|---|
백준/11650 좌표 정렬하기 (1) | 2022.12.04 |
백준/2108 통계학 (0) | 2022.12.04 |
백준/10989 수 정렬하기 3 (0) | 2022.12.03 |
백준/2751 수 정렬하기 2 (0) | 2022.12.03 |
댓글