# Anagram이란?

동일한 알파벳을 재배열하여 만들 수 있는 문장이나 단어를 말한다.
예를 들면, listen silent 두 단어는 애너그램이다.

개념은 간단하다. 사실 풀이도 간단하게 풀 수 있다.

중요한 점
알파벳의 위치만 바꿔서 단어를 만들기 때문에 두 단어 사이에는 결국 같은 알파벳이 존재하게 된다. 이 점을 활용하여 두 단어를 알파벳 순으로 정렬해서 같은지 아닌지 비교하여 문제를 풀 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private static boolean isAnagram(String a, String b) {
// 대소문자를 구분하지 않기 때문에 문자열의 문자를 모두 대문자로 바꾼다.
// 그리고 String을 char 배열로 변환한다.
char[] char_a = a.toUpperCase().toCharArray();
char[] char_b = b.toUpperCase().toCharArray();

// 알파벳 순으로 정렬한다.
Arrays.sort(char_a);
Arrays.sort(char_b);

// 다시 문자열에 할당한다.
String str_a = new String(char_a);
String str_b = new String(char_b);

// 그러면 정렬도 했으니 같은 문자열이 담겨 있게 된다.
// 같은 문자열일 경우 애너그램이라고 할 수 있으므로 true를 리턴한다.
if (str_a.equals(str_b)) {
return true;
}

return false;
}

참고