[오늘의 코테 연습장] - 1181 단어 정렬

Mini_me·2022년 4월 26일
0

공부[코테연습장]

목록 보기
10/36

풀이과정

  • Comparartor 클래스 이용하여 주어진 문자열을 조건에 맞게 정렬

    • 문자열의 길이가 같다면
      -> 오름차순으로 정렬 ( -> o1의 값이 더 크면 양수를 리턴하여 뒤로가게되므로 오름차순으로 정렬된다.)
      -> 만약 o1의 문자열의 길이가 o2보다 크다면 양수 반환 (1), 작다면 음수 반환(-1) : 정렬
  • arrays.sort(list,new compare()) 이용하여 조건에 맞게 list 정렬

    코드

    package backjoon;
    import java.util.Arrays;
    import java.util.Comparator;
    import java.util.Scanner;
    public class wordSort_1181 {
       public static void main(String[] args) {
           class compare implements Comparator<String> {
               @Override
               public int compare(String o1, String o2) {
                   if (o1.length() == o2.length()) { // 문자열의 길이가 같다면
                       return o1.compareTo(o2);// 오름차순으로 정렬 -> o1의 값이 더 크면 양수를 리턴하여 뒤로가게되므로 오름차순으로 정렬된다.
                   } else {
                       if(o1.length() > o2.length())
                           return 1;
                       else return -1;
                      // 만약 o1의 문자열의 길이가 o2보다 크다면 양수 반환 , 작다면 음수 반환 -> 정렬
                   }
               }
           }
    
           Scanner sc = new Scanner(System.in);
           int N;
           N = sc.nextInt();
           String list[] = new String[N];
    
           sc.nextLine();
           for (int i = 0; i < N; i++) {
               list[i] = sc.nextLine();
    
           }
    
           Arrays.sort(list, new compare()); // list 정렬
    
           System.out.println(list[0]);
    
           for (int i = 1; i < N; i++) { //중복된 단어는 한번만 출력
               if (!list[i].equals(list[i - 1])) {
                   System.out.println(list[i]);
               }
           }
       }
    }

0개의 댓글

관련 채용 정보