달달한 스토리

728x90
반응형

출처 핀터레스트

 

 

너무 졸리다..

 

시골 와서 한 문제만 더 한 문제만 더

 

이러다가 2문제 째이다..

 

이제는 문제 풀면서 졸고 있어서.. 한계이다..

 

정렬 문제가 나한테 잘 맞는 것 같다..

 

자신 있게 잘 풀어나가지는 것 같았다.

 

아래 코드를 봐보자.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Test1181 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();

        String[] arr = new String[N];

        for (int i = 0; i < N; i++) {
            arr[i] = br.readLine();
        }

        Arrays.sort(arr, (e1, e2) -> {
            if(e1.length() == e2.length()) {
                return e1.compareTo(e2);
            } else if(e1.length() < e2.length()) {
                return -1;
            }
            return 1;
        });

        //중복제거
        String[] newArr = Arrays.stream(arr).distinct().toArray(String[]::new);

        for (String s : newArr) {
            sb.append(s).append("\n");
        }
        System.out.print(sb);
    }
}

 

저번 정렬 문제랑은 크게 다를 것 없지만,

 

두 가지만 보면 된다.

 

첫 번째는 요소 두 개가 글자 길이가 같을 때

 

compareTo 메서드를 사용하게 되는데,

 

일반 String으로 저 compareTo 메서드를 쓰게 되면,

 

알파벳 사전 순으로 정리가 된다.

 

그 후 상황에 따른 반환 값을 다르게 한다.

 

두 번째는 중복 값의 개선인데,

 

String[] newArr = Arrays.stream(arr).distinct().toArray(String[]::new);

 

이것이 중복을 없애는 코드이다.

 

이 두 가지 특이점만 잘 활용하면 이 문제를 마무리 지을 수 있다.

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading