본문 바로가기
알고리즘

[알고리즘] 비밀지도

by keel_im 2021. 2. 15.
반응형

포인트

1. 이 문제의 요점은 바이너리 수로 바꿀수 있는가 이다. 

🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다. 

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

using namespace std;

vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
    vector<string> answer;
    vector<string> temp1;
    vector<string> temp2;

    for (auto ele : arr1) {
        int a = ele;
        string s1;
        while (a > 0) {

            if (a % 2 == 0) s1 = '0' + s1;
            else s1 = '1' + s1;
            a /= 2;
        }
        if (s1.size() < n) while (s1.size() < n) s1 = '0' + s1;
        temp1.push_back(s1);
    }

    for (auto ele : arr2) {
        int b = ele;
        string s1;
        while (b > 0) {

            if (b % 2 == 0) s1 = '0' + s1;
            else s1 = '1' + s1;
            b /= 2;
        }
        if (s1.size() < n) while (s1.size() < n) s1 = '0' + s1;
        temp2.push_back(s1);
    }

    for (int i = 0; i < temp1.size(); i++) {
        string s1 = temp1[i];
        string s2 = temp2[i];
        string total;
        for (int j = 0; j < s1.size(); j++) {
            if (s1[j] == '1' || s2[j] == '1') total += "#";
            else total += " ";
        }
        answer.push_back(total);
    }

    return answer;
}

cpp/c++  (수정 버전: 2021-02-15)

#include <bits/stdc++.h>

using namespace std;

vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
    vector<string> answer;
    
    for (int i=0; i<n; i++){
      auto a = bitset<16> (arr1[i]|arr2[i]).to_string();
      auto a1 = a.substr(distance(a.begin(), a.end()-n), n);
      replace(a1.begin(), a1.end(), '1', '#');
      replace(a1.begin(), a1.end(), '0', ' ');
      answer.push_back(a1);
    }
    return answer;
}

python

def solution(n, arr1, arr2):
    answer = []
    
    for ele in range(n):
      a = bin(arr1[ele]|arr2[ele]).replace('0b', '').rjust(n, '0').replace('1', '#').replace('0', ' ')
      answer.append(a)
    return answer



solution(5, [9, 20, 28, 18, 11], [30, 1, 21, 17, 28])
solution(6, [46, 33, 33, 22, 31, 50], [27, 56, 19, 14, 14, 10])
반응형

댓글