🔎

답안

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. 문제의 암호는 '+'와 '-'로 이진화 되어 있습니다.
  1. 문제의 해(1)와 달(0), Code의 세상 안으로!(En-Coding) 라는 부분을 통해 '+'는 1로 '-'는 0으로 바꿔야 한다는 것을 알 수 있고, 결과 값을 아스키 코드로 인코딩하면 답을 얻을 수 있습니다.

2. 풀이

  1. 문자열 배열에서 문자열 마다의 공백을 제거하기 위해 strip 메소드를 사용합니다.
    1. text[i].strip();
       
  1. 문자 대치를 위해 replace를 사용해서 0과 1 값으로 바꿔줍니다.
    1. text[i].strip().replace(" ", "").replace("+", "1").replace("-", "0");
       
  1. 문자를 0과 1의 정수로 바꿔줘야 하고, 이는 이진수이기 때문에 parseInt 메소드를 사용할 때, 2라는 별도의 인수를 추가합니다.
    1. int n = Integer.parseInt(text[i].strip().replace(" ", "").replace("+", "1").replace("-", "0"), 2);
       
  1. 해당 값을 char형으로 변환해 아스키 코드로 인코딩합니다.
    1. text[i] = String.valueOf((char)n);