문제 풀이 미 문제는 주어진 두 단어가 애너그램인지 아닌지를 확인하는 문제였다. 애너그램이란? 두 단어에 포함된 알파벳들이 동일하고, 순서만 다르면 성립하는 개념이었다. 1. 알파벳 빈도 계산: 두 단어가 애너그램인지 확인하기 위해서는 각 단어의 알파벳 빈도를 비교해야 했다. 2. 문자열 정렬 후 비교: 두 단어를 정렬한 후, 같은지 비교하면 더 직관적으로 풀 수 있었다. 3. 시간 복잡도 고려: 최대 길이가 100인 문자열 2개를 정렬하는 데 걸리는 시간은 O(n log n) 이므로 충분히 효율적이었다.

import java.util.Arrays;
import java.util.Scanner;

public class AnagramChecker {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 테스트 케이스 개수
        int testCaseCount = sc.nextInt();
        sc.nextLine(); // 개행 문자 처리

        // 테스트 케이스 처리
        for (int t = 0; t < testCaseCount; t++) {
            String input = sc.nextLine();
            String[] words = input.split(" ");
            String A = words[0];
            String B = words[1];

            // 애너그램 검사
            if (isAnagram(A, B)) {
                System.out.println("YES");
            } else {
                System.out.println("NO");
            }
        }
    }

    // 두 단어가 애너그램인지 확인하는 함수
    private static boolean isAnagram(String A, String B) {
        // 길이가 다르면 애너그램일 수 없으므로 바로 false 반환
        if (A.length() != B.length()) {
            return false;
        }

        // 두 단어를 문자 배열로 만들어 정렬
        char[] arrA = A.toCharArray();
        char[] arrB = B.toCharArray();
        
        Arrays.sort(arrA);
        Arrays.sort(arrB);

        // 정렬된 배열이 같으면 애너그램
        return Arrays.equals(arrA, arrB);
    }
}

풀이 방식 - 입력 받기: 테스트 케이스 개수를 먼저 입력받고, 그 다음에 각 테스트 케이스에서 두 단어를 입력받았다. - 애너그램 여부 체크: 두 단어를 정렬한 후, 동일한지 확인했다. 정렬 후 같다면 애너그램이니까 "YES", 다르면 "NO"를 출력했다. 이 문제를 풀면서 알게 된 점은, 애너그램을 확인하는 데 가장 간단하고 효율적인 방법은 정렬을 활용하는 방법이었다. 다만 정렬 후 비교하는 방식이기 때문에 O(n log n) 의 시간이 걸리긴 했지만, 문제에서 주어진 범위에서는 충분히 효율적이었다.