class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for(int i=0; i<n; i++){
answer[i] = Integer.toBinaryString(arr1[i] | arr2[i]);
}
for(int i=0; i<n; i++){
while(answer[i].length() != n){
answer[i] = " " + answer[i];
}
answer[i] = answer[i].replaceAll("1","#");
answer[i] = answer[i].replaceAll("0"," ");
System.out.println(answer[i]);
}
return answer; }
}
한변의 길이가 n인 정사각형배열의 형태로 각 칸은 “공백”(” “) 또는 “벽”(”#”)으로 이루어져있습니다.
지도1과 지도2를 겹쳐서 전체 지도를 얻을 수 있는데
두개의 지도를 겹쳐서 하나라도 벽(”#”)인 칸은 전체 지도에서도 벽이고
하나라도 공백(” “)인 칸은 전체 지도에서도 공백입니다.
10진수를 2진수로 변환하는 함수 - toBinaryString()
해당 함수를 이용해서 or 연산을 해주었습니다.
지도1과 지도2의 같은 칸에 해당하는 칸 중
둘 중 하나라도 1이면 1, 0이면 0 값이 초기화 되도록 값을 저장해주고
replaceAll() 함수를 이용해서 1 이면 #, 0이면 공백으로 바꾸어주었습니다.
만약 n=5이고 2진수로 변환해주었을 때 answer[i] = 1010 이라면
자릿수(n=5)가 맞지 않기 때문에 공백으로 처리해주고자
아래 코드를 넣어주어 자릿수를 맞춰주었습니다.
while(answer[i].length() != n){
answer[i] = " " + answer[i];
}