쉬운 문제였다!
로직을 생각해봣을 때, 무언가 int형 배열을 쓰는 거 보다 String으로 문자를 입력받아 charAt()을 사용하여 Character 배열로 내림차순 하는 게 낫다고 생각했다!
시간제한과 메모리제한은 n이 1,000,000이란 점에서 걱정했지만 2초라는 점에서 O(n^2)까진 가능할 거라고 판단했다.
내가 생각한 로직이다.
1. string으로 문자를 받음
2. 해당 문자를 charAt()으로 다시 배열로 변경
3. 해당 n의 크기가 1억개이니 Collections.sort(); -> Collections.sort는 O(n log n)을 보장하기 때문!
[최종 코드]
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
ArrayList<Character> arr = new ArrayList<>();
for (int i = 0; i < str.length(); i++)
arr.add(str.charAt(i));
Collections.sort(arr, Collections.reverseOrder());
for (char ch : arr)
System.out.print(ch);
}
}
배운점
점점 정렬에 익숙해지는 것 같아 기분이 좋다! 뭔가 스트림 사용법을 빨리 익혀서 아름다운 코드를 구현해보고 싶다!
'코딩테스트 > 백준' 카테고리의 다른 글
[백준 - JAVA] 28278 - 스택2 (1) | 2024.12.11 |
---|---|
[백준 JAVA] 2751 - 수 정렬하기2 (1) | 2024.12.08 |
[백준 JAVA] 25305 - 커트라인 (0) | 2024.12.08 |
[백준 JAVA] 2587 - 대표값2 (0) | 2024.12.08 |
[백준 JAVA] 2750 - 수 정렬하기 (0) | 2024.12.08 |