변수값은 저장할 시 2진수로 저장된다는 점을 이용하여 n비트에서 2진수 변환을 위해 Shift 연산을 활용하여 1비트씩 감소하면서 해당 비트값과 1과의 AND연산을 통한 2진수 결과값을 알 수 있다.
n비트 중에 한 비트씩 Shift(이동) 하여 연산하기 때문에 2진수의 각 자릿수의 숫자를 알 수 있다.
이 점을 이용하여 arr1과 arr2를 비트들의 Shift연산을 통해 각 자릿수의 OR연산의 결과값이 1이면 #을 넣고 아니면 공백을 넣도록 해주었다.
#include <string>
#include <vector>
using namespace std;
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> answer;
string str = "";
for (int i = 0; i < n; i++) {
string ans = "";
for (int j = n - 1; j >= 0; j--) {
ans += ((arr1[i] >> j) & 1) || ((arr2[i] >> j) & 1) == 1 ? "#" : " ";
}
answer.push_back(ans);
}
return answer;
}