Deff_Dev
[프로그래머스] 비밀지도 (C++) 본문
문제
풀이
이 문제는 주어진 각 벡터의 숫자들을 2진수로 만든 뒤, 각 자리를 비교하여 1이 하나라도 있으면 '#' 둘 다 0이라면 ' '를 넣는 문제다.
#include <string>
#include <vector>
using namespace std;
int idx;
int GetMatchNum (int count){
int n = 1;
for(int i = 0;i < count; i ++){
n *= 2;
}
return n;
}
string GetBinary(int num){
string str = "";
for(int i = idx - 1; i >= 0; i--){
int match = GetMatchNum(i);
if(num >= match){
str += '1';
num -= match;
}
else{
str += '0';
}
}
return str;
}
void SetMaps(vector<string> &map, vector<int> arr){
for(int i = 0; i < arr.size(); i++){
string lock = GetBinary(arr[i]);
map.push_back(lock);
}
}
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
idx = n;
vector<string> answer;
vector<string> map01;
vector<string> map02;
SetMaps(map01, arr1);
SetMaps(map02, arr2);
for(int i = 0; i < n; i++){
string str = "";
for(int j = 0; j < n; j++){
if(map01[i][j] == '1' ||map02[i][j] == '1') str += '#';
else str += ' ';
}
answer.push_back(str);
}
return answer;
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 귤 고르기 (C++) (0) | 2024.11.15 |
---|---|
[프로그래머스] 햄버거 만들기 (C++) (0) | 2024.11.13 |
[프로그래머스] 미로 탈출 (C++) (0) | 2024.11.12 |
[프로그래머스] 리코쳇 로봇 (C++) (0) | 2024.11.11 |
[프로그래머스] 요격 시스템 (C++) (1) | 2024.11.07 |