코딩테스트/백준

[백준 JAVA] 1427 - 소트인사이드

kittae 2024. 12. 9. 14:00

쉬운 문제였다!

 

로직을 생각해봣을 때, 무언가 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