현수는 영희에게 알파벳 대문자로 구성된 비밀편지를 매일 컴퓨터를 이용해 보냅니다.
비밀편지는 현수와 영희가 서로 약속한 암호로 구성되어 있습니다.
만약 현수가 “#*#”으로 구성된 문자를 보냈다면 영희는 현수와 약속한 규칙대로 다음과 같이 해석합니다.
“#*#”를 일곱자리의 이진수로 바꿉니다. #은 이진수의 1로, *이진수의 0으로 변환합니다. 결과는 “1000001”로 변환됩니다.
바뀐 2진수를 10진수화 합니다. “1000001”을 10진수화 하면 65가 됩니다.
아스키 번호가 65문자로 변환합니다. 즉 아스크번호 65는 대문자 'A'입니다.
참고로 대문자들의 아스키 번호는 'A'는 65번, ‘B'는 66번, ’C'는 67번 등 차례대로 1씩 증가하여 ‘Z'는 90번입니다.
현수가 보낸 신호를 해석해주는 프로그램을 작성해서 영희를 도와주세요.
public class Decode {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int input1 = in.nextInt();
String input2 = in.next();
solution(input1, input2);
}
public static void solution(int input1, String input2){
input2 = input2.replace("#", "1").replace("*", "0");
StringBuilder sb = new StringBuilder();
for(int i=0; i<input1; i++){
String str = input2.substring(0, 7);
input2 = input2.substring(7);
int parse = Integer.parseInt(str, 2);
char c = (char) parse;
sb.append(c);
}
System.out.println(sb.toString());
}
}
2진수 변환과정을 직접 구현했다면 긴 문제였겠지만 Integer.parseInt("변경될 문자열", 변경하고자 하는 진수)를 알고 있다면 금방 해결할 수 있는 문제