네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.
네오가 프로도의 비상금을 손에 넣을 수 있도록, 비밀지도의 암호를 해독하는 작업을 도와줄 프로그램을 작성하라.
⚡ 요약하면
1. n개의 정수가 들어있는 배열 두 개 입력
2. 정수를 각각 이진수로 변환하여(n x n 배열이라고 가정) arr1[i][j]와 arr2[i][j] 중 하나라도 1이면 answer[i][j] = '#', 둘 다 0이면 answer[i][j] = ' '
#include <string>
#include <vector>
using namespace std;
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> answer;
for(int j = 0; j<n; j++){
string s = "";
for(int i = n - 1, k = 0; i >= 0; i--, k++){
if((arr1[j] >> i & 1) | (arr2[j] >> i & 1)){
s += "#";
}
else s += " ";
}
answer.emplace_back(s);
}
return answer;
}
if((arr1[j] >> i & 1) | (arr2[j] >> i & 1))
으로 풀었는데 다시 보니 if((arr1[j] | arr2[j])) >> i & 1))
으로 했어도 됐겠다.
📍 비트 연산자로 십진수에서 이진수 변환하기
int n = 13;
for(int i = 4 ; i>=0; --i) {
cout << (n >> i & 1);
}
// 출력 : 01101