public class Q1 {
public static void main(String[] args) {
String[] text = {
" + -- + - + - ",
" + --- + - + ",
" + -- + - + - ",
" + - + - + - + "
};
solution(text);
}
public static void solution(String[] text) {
for (int i = 0; i < text.length; i++) {
int n = Integer.parseInt(text[i].strip().replace(" ", "").replace("+", "1").replace("-", "0"), 2);
text[i] = String.valueOf((char)n);
System.out.print(text[i]);
}
}
}
1. 문제 파악
- 문제의 암호는 '+'와 '-'로 이진화 되어 있습니다.
- 문제의
해(
1
)와 달(
0
), Code의 세상 안으로!(
En-Coding
)
라는 부분을 통해 '+'는 1로 '-'는 0으로 바꿔야 한다는 것을 알 수 있고, 결과 값을 아스키 코드로 인코딩하면 답을 얻을 수 있습니다.
2. 풀이
- 문자열 배열에서 문자열 마다의 공백을 제거하기 위해 strip 메소드를 사용합니다.
text[i].strip();
- 문자 대치를 위해 replace를 사용해서 0과 1 값으로 바꿔줍니다.
text[i].strip().replace(" ", "").replace("+", "1").replace("-", "0");
- 문자를 0과 1의 정수로 바꿔줘야 하고, 이는 이진수이기 때문에 parseInt 메소드를 사용할 때, 2라는 별도의 인수를 추가합니다.
int n = Integer.parseInt(text[i].strip().replace(" ", "").replace("+", "1").replace("-", "0"), 2);
- 해당 값을 char형으로 변환해 아스키 코드로 인코딩합니다.
text[i] = String.valueOf((char)n);