1차 풀이
/**
* 암호해독
*
* @param n 지도 한변의 크기
* @param arr1 정수 배열
* @param arr2 정수 배열
* @return 원래의 비밀지도
*/
public static String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for (int i = 0; i < n; i++) {
String s = Integer.toBinaryString(arr1[i] | arr2[i]);
StringBuilder sb = new StringBuilder();
for (int j = 0; j < n; j++) {
if (s.charAt(j) == '1') {
sb.append("#");
} else {
sb.append(" ");
}
}
answer[i] = sb.toString();
}
return answer;
}
이 풀이의 가장 큰 문제점이 있다
제일 앞의 숫자가 0이 나오는 경우 Integer.toBinaryString 는 공백을 반환한다 예를들면 011000 인경우 11000 이 출력되는 오류이다
그런데 진짜 이렇게 간단하고 좋은 풀이를 발견했다
s = String.format("%"+n+"s",str);
s = s.replaceAll("1" , "#");
s = s.replaceAll("0" , " ");