Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

forDevLife

[백준] 1181 - 단어 정렬 본문

알고리즘

[백준] 1181 - 단어 정렬

JH_Lucid 2021. 6. 14. 18:08

 

- 방법 1

hashSet으로 입력되는 문자를 받은 후, 중복 제거해서 ArrayList에 넘긴다.

넘겨진 ArrayList를, compare를 override해서 정렬한 후 출력한다.

 

- 팁1 : new ArrayList<>(hashSet)을 통해 해당 내용으로 ArrayList를 생성할 수 있다.

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

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());

        HashSet<String> hashSet = new HashSet<>();

        for(int i=0; i<N; i++) {
            hashSet.add(br.readLine());
        }
        ArrayList<String> arr = new ArrayList<>(hashSet);

        Collections.sort(arr, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                if (o1.length() == o2.length()) {
                    return o1.compareTo(o2);
                } else
                    return o1.length() - o2.length();
            }
        });
        for(String x : arr) {
            System.out.println(x);
        }
    }
}

 

 

- 방법 2

 

ArrayList는 Collections.sort를 통해서, String은 Arrays.sort를 통해 정렬 가능하다.

HashSet없이, 정렬된 배열에 대해서 이전 값과 동일하지 않을 경우에만 StringBuilder에 추가하는 방식으로 구현하였다.

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

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());

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

        Arrays.sort(arr, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                if (o1.length() == o2.length()) {
                    return o1.compareTo(o2);
                } else
                    return o1.length() - o2.length();
            }
        });

        StringBuilder sb = new StringBuilder();
        sb.append(arr[0]).append('\n');

        for(int i=1; i<N; i++) {
            if(!arr[i].equals(arr[i-1])) {
                sb.append(arr[i]).append('\n');
            }
        }
        System.out.println(sb);
    }
}

 

'알고리즘' 카테고리의 다른 글

[백준] 1920 - 수 찾기  (0) 2021.06.15
[백준] 1259 - 팰린드롬수  (0) 2021.06.15
[백준] 1018 - 체스판 다시 칠하기  (0) 2021.06.14
[백준] 1417 - 국회의원 선거  (0) 2021.06.14
[백준] 1343 - 폴리오미노  (0) 2021.06.14
Comments