알고리즘: 백준-1181

애강·2022년 4월 25일
0

알고리즘

목록 보기
2/2
post-thumbnail

문제 링크

설명

주어진 문자열 배열을 정렬하는 문제이다.
일반적인 사전순서 문자열 정렬 이외에 문자열 길이에 따른 배열이 필요하다.

풀이

  1. 입력받은 n크기만큼 문자열을 list에 담는다.
  2. java의 comparator을 이용하여 정렬한다.
  • 문자열 길이 비교 (첫번째 파라미터가 작으면 -1 리턴, 크면 -1)
  • 문자열 길이가 같을 때: compareTo를 이용하여 크기비교 (1과 같은방식)
  1. 문자열의 중복을 제거한다. stram().distinct()
  2. 출력한다.

코드

import java.util.*;
import java.util.stream.Collectors;

public class Main {


    private ArrayList<String> list = new ArrayList<>();

    public void solve() {

        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();

        for (int i = 0; i < n; i++)
            list.add(scanner.next());

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

        list = (ArrayList<String>) list.stream().distinct().collect(Collectors.toList());

        for (String s : list) System.out.println(s);



    }

    public static void main(String[] args) {

        Main main = new Main();
        main.solve();

    }


}

profile
안녕하세요 개발자 애강 입니다.

0개의 댓글