영어 알파벳의 암호화 ( 예를 들어 connect의 경우 )
1. 영어 단어의 각각의 영어 알파벳을 그에 대응하는 번호로 변환한다. ( a는 0, b는 1, .... , z는 25가 된다 )
connect → 2/14/13/13/4/2/19
2. 영어 단어의 알파벳을 거꾸로 뒤집는다.
tcennoc → 19/2/4/13/13/14/2
3. 변환된 두 수를 더한다.
21413134219 + 19241313142 = 40654447361
4. 더한 결과값을 다시 알파벳으로 변환한다. 이 때, 왼쪽에서 두 자리씩 끊어서 26으로 나눈 나머지 값에 대응하는 알파벳으로 변환한다.
마지막 수가 한자리 수가 나온다면 바로 대응하는 알파벳으로 변환한다.
40/65/44/47/36/1 → 14/13/18/21/10/1 → onsvkb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | import java.util.Scanner; public class Test3 { public static void main(String args[]){ String english[] = { "a" , "b" , "c" , "d" , "e" , "f" , "g" , "h" , "i" , "j" , "k" , "l" , "m" , "n" , "o" , "p" , "q" , "r" , "s" , "t" , "u" , "v" , "w" , "x" , "y" , "z" }; Scanner sc = new Scanner(System.in); String num = sc.nextLine(); String arr[] = num.split( "" ); Long sum = ( long ) 0 ; String a= "" ; String b= "" ; for ( int i= 0 ; i<arr.length; i++){ for ( int j= 0 ; j<english.length; j++){ if (arr[i].equals(english[j])){ a = a+j; } } } for ( int i=arr.length- 1 ; i>= 0 ; i--){ for ( int j= 0 ; j<english.length; j++){ if (arr[i].equals(english[j])){ b = b+j; } } } System.out.println( "String = " +a); System.out.println( "String2 = " +b); sum = ( long ) (Double.parseDouble(a) + Double.parseDouble(b)); System.out.println( "sum = " +sum); String arr2[] = String.valueOf(sum).split( "" ); String result[] = new String[arr2.length/ 2 + 1 ]; int data_num = 0 ; int nanu = 0 ; for ( int i= 0 ; i<=arr2.length; i+= 2 ){ //2자리씩 끊기 위해 if (i+ 2 > arr2.length){ result[data_num] = String.valueOf(sum).substring(i); } else { result[data_num] = String.valueOf(sum).substring(i, i+ 2 ); nanu = Integer.parseInt(result[data_num]); if (nanu > 26 ){ nanu = nanu % 26 ; result[data_num] = String.valueOf(nanu); } } data_num++; } String s = "" ; int result2 = 0 ; String value = "" ; for ( int i= 0 ; i<result.length; i++){ result2 = Integer.parseInt(result[i]); System.out.println( "result2 = " +result2); //숫자 value = english[result2]; s = s+value; } System.out.println(s); } } |
결과값
connect String = 21413134219 String2 = 19241313142 sum = 40654447361 result2 = 14 result2 = 13 result2 = 18 result2 = 21 result2 = 10 result2 = 1 onsvkb |
'알고리즘 > 응용문제' 카테고리의 다른 글
[문제 2] 완전 제곱수의 개수 구하기 (0) | 2016.12.20 |
---|---|
[문제 1] 주어진 수의 평균 구하기 (0) | 2016.12.19 |