< 문제 >
- 개요
애너그램(anagram)은 단어나 문장을 구성하고 있는 문자의 순서를 바꾸어 다른 단어나 문장을 만드는 놀이이다. 두개의 단어가 주어졌을 때, 두단어가 애너그램에 해당하는 지 확인하는 함수를 구현하라. (10분)
-
Anagram : 두개의 문자열이 서로 같은 스펠링으로 구성되어 있다.
-
예상 결과
예상 결과는 하기 코드 실행시 예상되는 결과 값이다.
예상 결과는 하기 코드 실행시 예상되는 결과 값이다.
결과 : 키워드 'Ave Maria, gratia plena, Dominus tecum' , 'Virgo serena, pia, munda et immaculata'의 Anagram 여부 >> true
< 정답풀이 >
public class test03 {
private static final String result = "결과 : 키워드 '%s' , '%s'의 Anagram 여부 >> %s";
public static void main( String[] args ) {
// 시작시간 기록
long startTime = System.currentTimeMillis();
// STEP 1. TEST 데이터 준비
String firstWord = "Ave Maria, gratia plena, Dominus tecum";
String secondWord = "Virgo serena, pia, munda et immaculata";
// STEP 2. Anagram 확인
boolean isAnagram = isAnagram( firstWord, secondWord );
System.out.println( String.format( result, firstWord, secondWord, isAnagram ) );
// 종료시간 기록
long endTime = System.currentTimeMillis() - startTime;
System.out.println( "소요시간 : " + endTime + "ms." );
}
/**
* <PRE>
* Anagram 여부를 검증한다.
* </PRE>
*
* @param firstKeyword : 첫번째 단어
* @param secondKeyword : 두번째 단어
* @return Anagram 여부
*/
public static boolean isAnagram( String firstKeyword, String secondKeyword ) {
char[] firstArr = firstKeyword.replace( " ", "" ).toLowerCase().toCharArray();
char[] secondArr = secondKeyword.replace( " ", "" ).toLowerCase().toCharArray();
/*
* Array.sort API를 활용하여 배열들을 정렬한다.
*/
Arrays.sort( firstArr );
Arrays.sort( secondArr );
return Arrays.toString( firstArr ).equals( Arrays.toString( secondArr ) );
}
}