[시저의 암호 - Easy]

< 문제 >

  • 개요
    시저의 암호. 여러 가지 암호문 중에서 ‘시저의 암호’는 알파벳을 3자씩 건너 띄어 사용한다. 즉,
    A -> D
    B -> E

    Y -> B
    Z -> C
    와 같이 바꾸어 쓰는 것이다. 이렇게 하면 THEY 가 WKHB 로 바뀌게 된다.
    주어진 영어 문장을 시저의 암호로 바꾸도록 한다. 입력 받는 영어 문장은 대소문자를모두 받을 수 있지만, 시저의 암호에서는 모든 문자를 소문자로 취급한다.

  • 예상 결과
    예상 결과는 하기 코드 실행시 예상되는 결과 값이다.

HelloWorld -> khoorzruog

< 정답풀이 >

 public class Test01 {

	private static final String result = "결과 : %s >> %s";

	public static void main( String[] args ) {
		// 시작시간 기록
		long startTime = System.currentTimeMillis();

		// STEP 1. TEST 데이터 준비
		String original = "HelloWorld";

		// STEP 2. 실행
		String caesarStr = CaesarCode( original );
		System.out.println( String.format( result, original, caesarStr ) );

		// 종료시간 기록
		long endTime = System.currentTimeMillis() - startTime;
		System.out.println( "소요시간 : " + endTime + "ms." );
	}

	/**
	 * 
	 * <PRE>
	 * 시저의 암호 방식으로 주어진 영어 문장을 변경한다
	 * </PRE>
	 * 
	 * @param originalStr
	 * @return
	 */
	public static String CaesarCode( String originalStr ) {
		char[] charArr = originalStr.toLowerCase().replace( " ", "" ).trim().toCharArray();
		StringBuffer sb = new StringBuffer();

		for ( char ch : charArr ) {
			/*
			 * 해당 알파벳에서 3칸 뒤의 알파벳을 구한다.
			 * (알파벳은 26자리, 97은 소문자 a에 해당하는 ASCII CODE)
			 */
			int charCode = 97 + ((ch + 3 - 97) % 26);
			sb.append( (char)(charCode) );
		}
		return sb.toString();
	}