Krononberg

프로그래머스) 비밀지도 c++ (카카오코테1차) 본문

개발 로그/알고리즘

프로그래머스) 비밀지도 c++ (카카오코테1차)

k._. 2021. 9. 3. 10:32

나의 방식

1. 10진수의 arr1 arr2에 대해, 각각 2진수로 바꿈.

2. 각각의 2진수를 비교하여, 비밀지도 합본 완성.

3. string변환

 

배운것 (컴퓨터는 10진수를 2진수로 읽음에 착안. 출제자의 의도.)

1. arr1 arr2 OR 비트 연산을 통해, 비밀지도 합본 완성

2. string변환

 

 

#include <string>
#include <vector>

using namespace std;

vector<int> toBinary(int x, int k){
    vector <int> v;
    for(int i=0; i<k; i++){
        v.push_back(x%2);
        x=x/2;
    }
    return v;
}

vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
    vector<string> answer;
    vector<int> x; vector<int> y; vector<int>temp;
    for(int i =0; i< arr1.size(); i++){
        x = toBinary(arr1[i],n);
        y = toBinary(arr2[i],n);
        string s ="";
        for(int j =0; j < x.size(); j++){
            if(x[x.size()-1-j] ==0 && y[y.size()-1-j] ==0) s += ' ';
            else s += '#';
        }
        answer.push_back(s);
    }
    return answer;
}