프로그래머스 - lv1 비밀지도

이상현·2021년 1월 18일
0

알고리즘_문제풀이

목록 보기
11/45
post-thumbnail

비밀지도

문제는 프로그래머스에서 확인 할 수 있다.


✔ 접근방법

비트연산(OR)을 이용한다.


✔ 코드

#include <string>
#include <vector>
#include <bitset>
#include <iostream>

using namespace std;

vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
    vector<string> answer;
    vector<int> temp;
    vector<string> v_bitset;
    string bits;

    /* 비트연산 */
    for( int i=0; i<n; i++ ){
        temp.push_back(arr1[i] | arr2[i]);
    }

    /* bitset 이용하여 만들어진 16자리수를 n개로 저장 */
    for( int i=0; i<n; i++ ){
        bits = bitset<16>(temp[i]).to_string();
        v_bitset.push_back("");
        for(int j=16-n; j<16; j++){
            v_bitset[i].push_back(bits[j]);
        }
    }

    /* 비트 값을 확인하여 결과 도출 */
    for( int i=0; i<n; i++ ){
        answer.push_back("");
        for( int j=0; j<n; j++ ){
            if ( v_bitset[i][j] == '1' ){
                answer[i].push_back('#');
            }
            else{
                answer[i].push_back(' ');
            }
        }
    }

    return answer;
}

int main(void){
    int n = 5;
    vector<int> arr1 = {9,20,28,18,11};
    vector<int> arr2 = {30,1,21,17,28};
    vector<string> ret;

    ret = solution(n,arr1,arr2);

    return 0;
}


☝ 팁

  • 비트를 쉽게 다룰 수 있게 도와주는 bitset 라이브러리가 있다.

👍 참고 사이트

프로그래머스

profile
'당신을 한 줄로 소개해보세요'를 이 블로그로 대신 해볼까합니다.

0개의 댓글

관련 채용 정보