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 | class Solution { public String solution(String letter) { // 문자열 letter의 '.'은 '0'으로, '-'은 '1'로 치환 letter = letter.replace('.', '0').replace('-', '1'); // 문자열 letter을 " "을 기준으로 분할 String[] morseArr = letter.split(" "); /* * 모스부호 '.'을 '0', '-'을 '1'로 볼 때 * 행 = 자릿수-1 * 열 = 숫자 크기 * 예: morseToChar[1][2] = 2 = '10' = '-.' = 'n' */ char[][] morseToChar = { { 'e', 't'}, { 'i', 'a', 'n', 'm' }, { 's', 'u', 'r', 'w', 'd', 'k', 'g', 'o' }, { 'h', 'v', 'f', 'Ŭ', 'l', 'Æ', 'p', 'j', 'b', 'x', 'c', 'y', 'z', 'q'} }; String plaintext = ""; // 평문 // 모스부호 개수만큼 반복 for(int i=0; i<morseArr.length; i++) { // 행 = 문자열 morseArr[i]의 길이-1 int row = morseArr[i].length()-1; // 열 = 문자열 morseArr[i]을 2진수로 보았을 때 크기 int column = Integer.parseInt(morseArr[i], 2); // 모스 부호에 해당하는 문자 = morseToChar[row][column] plaintext += morseToChar[row][column]; } // 모스보호를 평문으로 변환한 결과를 return return plaintext; } } | cs |
단순하게 생각하면
switch문으로 할 수도 있는데
그건 너무 단순 무식한 것 같아서
나름 규칙을 찾아 봄.
뭘 보호해?
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ - dc App
모스를 보호한대 ㅇㅅㅇ - dc App
이해가 안가요 - dc App
그냥 dict 주어진거 사용하면 되지 뭐하러 쓸모없는 짓을 할까...