[백준] 단어 정렬

2025. 7. 29. 15:18프로그래밍 언어/Java

문제

https://www.acmicpc.net/problem/1181

 

백준 문제 1181번 solved.ac 기준 실버 5문제이다.

 

 

 

접근 방식

시간을 2초씩 준 것 널널하다고 생각을 하였다.

일단 한번 Arrays.sort() 을 진행을 해보았다.

 

1차 소스코드

더보기
import java.util.Arrays;
import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int n = sc.nextInt();
    sc.nextLine();

    String[] str = new String[n];

    for( int i = 0; i < n; i++ ) {
      str[i] = sc.nextLine();
    }

    str = Arrays.stream(str).distinct().sorted().toArray(String[]::new);

    Arrays.stream(str).forEach(System.out::println);
  }
}

 

결과

예시를 기준으로는 단어가 알파벳 순서로 정렬이 된 것을 확인 할 수 있다.

 

이제 글자 길이 순서대로 정렬을 하면된다고 생각을 하였다.

글자 길이가 같다면 글자 순서를 바꾸지 않을 태니 문제가 없다고 생각하였다.

 

2차 소스코드

더보기
import java.util.Arrays;
import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int n = sc.nextInt();
    sc.nextLine();

    String[] str = new String[n];

    for( int i = 0; i < n; i++ ) {
      str[i] = sc.nextLine();
    }

    str = Arrays.stream(str).distinct().sorted().toArray(String[]::new);
    Arrays.sort(str, (String str1, String str2) -> str1.length() - str2.length());

    Arrays.stream(str).forEach(System.out::println);
  }
}

 

결과

예상한대로 잘 나왔다.

 

마무리

해당 글을 적는 것은 생각대로 접근하고 소스 코드 만드는 방법을 몰라서 기록을 하기 위함이다.

나중에 까먹어도 찾기가 쉬워지도록 적어둔다.