본문 바로가기
PS/프로그래머스

프로그래머스 비밀지도 cpp

by 지기_ 2021. 5. 24.
반응형

1. 문제

한 쪽이라도 벽(1)이 있으면 벽으로 처리하고, 둘 다 빈 공간(0)이면 빈 공간으로 처리해서 string을 출력!

2. 설계

 

3. 알고리즘

 

4. 구현

1) 문제의 조건에 맞는 OR 비트 연산을 한다.

2) cpp에서 십진수->이진수로 바꾸는 bitset<자리수>를 한다. 자리수에는 int만 넣을 수 있고 변수를 넣을 수 없다.

3) bit연산 결과를 string으로 바꾸려면 bit.to_string()

#include <bits/stdc++.h>
using namespace std;

vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
    vector<string> answer;
    vector<int> tmpV;
    for(int i=0; i<n; i++){
        tmpV.push_back(arr1[i]|arr2[i]);
    }
    for(auto iter: tmpV){
        string bits = bitset<20>(iter).to_string();
        string tmpS = "";
        for(int i=(20-n); i<20; i++){
            if(bits[i]=='1')    tmpS+='#';
            else tmpS+=' ';
        }
        answer.push_back(tmpS);
    }
    return answer;
}

 

반응형

댓글