반응형
포인트
1. 이 문제의 요점은 바이너리 수로 바꿀수 있는가 이다.
🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> answer;
vector<string> temp1;
vector<string> temp2;
for (auto ele : arr1) {
int a = ele;
string s1;
while (a > 0) {
if (a % 2 == 0) s1 = '0' + s1;
else s1 = '1' + s1;
a /= 2;
}
if (s1.size() < n) while (s1.size() < n) s1 = '0' + s1;
temp1.push_back(s1);
}
for (auto ele : arr2) {
int b = ele;
string s1;
while (b > 0) {
if (b % 2 == 0) s1 = '0' + s1;
else s1 = '1' + s1;
b /= 2;
}
if (s1.size() < n) while (s1.size() < n) s1 = '0' + s1;
temp2.push_back(s1);
}
for (int i = 0; i < temp1.size(); i++) {
string s1 = temp1[i];
string s2 = temp2[i];
string total;
for (int j = 0; j < s1.size(); j++) {
if (s1[j] == '1' || s2[j] == '1') total += "#";
else total += " ";
}
answer.push_back(total);
}
return answer;
}
cpp/c++ (수정 버전: 2021-02-15)
#include <bits/stdc++.h>
using namespace std;
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> answer;
for (int i=0; i<n; i++){
auto a = bitset<16> (arr1[i]|arr2[i]).to_string();
auto a1 = a.substr(distance(a.begin(), a.end()-n), n);
replace(a1.begin(), a1.end(), '1', '#');
replace(a1.begin(), a1.end(), '0', ' ');
answer.push_back(a1);
}
return answer;
}
python
def solution(n, arr1, arr2):
answer = []
for ele in range(n):
a = bin(arr1[ele]|arr2[ele]).replace('0b', '').rjust(n, '0').replace('1', '#').replace('0', ' ')
answer.append(a)
return answer
solution(5, [9, 20, 28, 18, 11], [30, 1, 21, 17, 28])
solution(6, [46, 33, 33, 22, 31, 50], [27, 56, 19, 14, 14, 10])
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘] 간단한 이진탐색 구현 (0) | 2021.03.01 |
---|---|
[알고리즘] Container With Most Water (0) | 2021.02.18 |
[알고리즘] 다음 큰 숫자 (0) | 2021.02.15 |
[알고리즘] Shortest Path in Binary Matrix (0) | 2021.02.14 |
[알고리즘] Intersection of Two Arrays 2 (0) | 2021.02.13 |
댓글