처음에는 둘다 2진수로 바꾸고 비교를 해보면 되겠다고 생각을 했는데 비트연산자를 사용해서 미리 연산을 해두고 2진수 변환을 하면 더 좋다는 걸 알게되어서 그렇게 구현해 보았다

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
    vector<string> answer;
    int a,b;
    for(int i=0;i<n;i++){
        string tmp="";
        arr1[i]=arr1[i] | arr2[i];      //비트 OR연산해서 하나라도 1이면 1 
        
        while(tmp.size()!=n){       //2진수변환과 동시에 지도 만들기
            if(arr1[i]%2==0){
                tmp.push_back(' ');
            }else{
                tmp.push_back('#');
            }
            arr1[i]/=2;
        }
        reverse(tmp.begin(),tmp.end());
        answer.push_back(tmp);
    }
   
    return answer;
}

+ Recent posts