프로그래머스(Programmers)
프로그래머스 비밀지도 C++
cosmohoo
2022. 3. 13. 11:46
반응형
=> 단순구현문제였습니다.
=> 10진수로 주어진 숫자를 2진수 숫자로 변환하여 string형 vector 변수로 표현하여야 합니다.
string Binary(int num , int digit) // 십진수, 자릿수
{
string s = bitset<16>(num).to_string(); //< > 안에 있는 숫자는 몇자리까지 표현할지를 정한다.
string value = s.substr(16-digit); // substr을 통해 필요한 숫자만큼만 쓴다.
return value;
}
=> 위는 10진수를 2진수로 표현하는 방법입니다. 필요한 자릿수만큼 사용하기 위해 substr 함수를 이용하였습니다.
=> 두 string형 vector map1 과 map2를 비교하여 둘중에 하나라도 벽이 있으면 '#'을 넣어주고, 아닐 경우 ' '을 넣어주어야 합니다.
#include <string>
#include <vector>
#include <bitset>
#include <iostream>
using namespace std;
string Binary(int num , int digit) // 십진수, 자릿수
{
string s = bitset<16>(num).to_string();
string value = s.substr(16-digit);
return value;
}
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> finalMap;
vector<string> map1; //첫번째 map
vector<string> map2; //두번째 map
for(auto k : arr1)
{
string s = Binary(k, n);
map1.push_back(s);
}
for(auto p : arr2)
{
string s = Binary(p, n);
map2.push_back(s);
}
string fMapEle ="";//finalMap에 넣을 원소
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if((map1[i][j] == '1') || (map2[i][j]=='1')) // 둘중에 하나라도 벽이 있으면
fMapEle.push_back('#');
else fMapEle.push_back(' '); //둘다 벽이 없으면
}
finalMap.push_back(fMapEle);
fMapEle =""; //원소초기화
}
return finalMap;
}
반응형