문제
접근
비트 연산을 이용하는 문제이다.
두 배열을 or 연산하면 정답이 나온다.
이를 2진수 기준으로 공백과 벽을 대입하면 된다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
def solution(n, arr1, arr2):
answer = []
for i in range(n):
a = arr1[i] | arr2[i]
s = ''
for j in range(n):
if a%2 == 0:
s = " "+s
else:
s = '#'+s
a//=2
answer.append(s)
return answer
- C++ 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <string>
#include <vector>
using namespace std;
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> answer;
string s = "";
s.resize(n, ' ');
for(int i = 0; i<n;i++){
int a = arr1[i] | arr2[i];
for(int j=n-1;j>=0;j--){
if(a%2==0){
s[j] = ' ';
}
else{
s[j] = '#';
}
a /= 2;
}
answer.push_back(s);
}
return answer;
}