[프로그래머스]비밀지도(C++)

문제-비밀지도

🤔문제 해석

크기가 n인 벡터 2개가 입력된다.

각각의 벡터의 값들을 n자리 수의 2진수로 바꾸어 2개의 n * n배열들로 만들었을 때 같은 위치에 있는 값이 공백일 때만 공백이고 나머지 경우에는 #인 2차원 벡터를 출력한다.

😏풀이

✔비트연산자 사용하기!!

arr1과 arr2의 값들을 비트연산자를 활용하여 저장한 뒤
그 값을 2진법으로 나타내어 0일 때는 공백, 1일 때는 #으로 temp(string)에 저장한다.

마지막엔 reverse함수를 사용하여 temp 뒤집어주기!

💻코드

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
    vector<string> answer;
    
    for(int i=0;i<n;i++){
        string temp="";
        
        arr1[i]=arr1[i]|arr2[i];
        
        while(temp.size()!=n){
            if(arr1[i]%2==0){
                temp+=' ';
            }
            else{
                temp+='#';
            }
            arr1[i]/=2;
        }
        reverse(temp.begin(),temp.end());
        answer.push_back(temp);            
    }    
    
    return answer;
}

좋은 웹페이지 즐겨찾기