https://school.programmers.co.kr/learn/courses/30/lessons/17681
이 문제는 주어진 정수를 이진수로 변환한 후 이진수에 맞게 0은 공백 1은 '#'으로 변환하는 문제이다.
arr1과 arr2를 or연산하여 푸는 것이 정답임을 확인하였다.
하지만 2진수를 만든 후 합하여 푸는 것도 가능했다.
#include <string>
#include <vector>
using namespace std;
int M;
string makeBinary(int n){
string num = "";
for(int i = 0;i<M;i++){
num += to_string(n % 2);
n /= 2;
}
return num;
}
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> answer;
vector<string> v;
M = n;
for(int i = 0;i<arr1.size();i++){
int b = arr1[i];
string s = makeBinary(b);
string temp = "";
for(int i = s.length() - 1;i>=0;i--){
if(s[i] == '0')
temp += " ";
else
temp += "#";
}
answer.push_back(temp);
}
for(int i = 0;i<arr2.size();i++){
int b = arr2[i];
string s = makeBinary(b);
string temp = "";
for(int i = s.length() - 1;i>=0;i--){
if(s[i] == '0')
temp += " ";
else
temp += "#";
}
v.push_back(temp);
}
for(int i = 0;i<v.size();i++){
for(int j = 0;j<M;j++)
if(v[i][j] != answer[i][j])
answer[i][j] = '#';
}
return answer;
}
'Programmers Review' 카테고리의 다른 글
[Lv 1] 두 개 뽑아 더하기 (0) | 2024.06.04 |
---|---|
[Lv 1] 실패율 (0) | 2024.06.04 |
[Lv 1] 예산 (0) | 2024.06.01 |
[Lv 1] 다트 게임 (0) | 2024.06.01 |
[Lv 1] 체육복 (0) | 2024.06.01 |