https://school.programmers.co.kr/learn/courses/30/lessons/17681
arr1의 각 원소와 arr2의 각 원소들을 비트OR연산한다. 그 후 2의 n-1제곱부터 빼가면서 #인지 공백인지 검사하여 string을 완성한 뒤 answer에 넣어준다.
for문을 2개가 아닌 1개로 통합 할 수 있다.
#include <string>
#include <vector>
#include <cmath>
#include <iostream>
using namespace std;
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> answer;
vector<int> arr;
for(int i = 0; i < arr1.size(); i++)
{
arr.push_back((arr1[i] | arr2[i]));
}
for(int a : arr)
{
string s;
for(int i = n - 1; i >= 0; i--)
{
int num = pow(2,i);
if(a - num >= 0)
{
a -= num;
s += '#';
}
else
s += ' ';
}
answer.push_back(s);
}
return answer;
}
#include <string>
#include <vector>
using namespace std;
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> answer;
for(int i=0; i <n; i++){
arr1[i] = arr1[i]|arr2[i];
string ans = "";
for(int j = 0; j<n; j++){
if(arr1[i] % 2 == 0) ans = " " + ans;
else ans = "#" + ans;
arr1[i] = arr1[i] >> 1;
}
answer.push_back(ans);
}
return answer;
}
똑같이 비트 OR 연산자로 합한 뒤 이진법을 계산할 때 2로 나눈 나머지가 있으면 #, 없으면 공백에 + ans를 한다( ans의 앞쪽에 #이나 공백을 추가해나간다.) 추가한 뒤 비트 이동 연산자로 2로 나누어준다