[애너그램 찾기- Easy]

< 문제 >

  • 개요

애너그램(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 ) );
	}
}