본문 바로가기

개발/알고리즘 & 자료구조

[카카오 2018 코딩테스트 1차] 비밀지도

반응형

https://programmers.co.kr/learn/courses/30/lessons/17681

 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr

[카카오 2018 코딩테스트 1차] 비밀지도

 

#include <string>
#include <vector>

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 resultN="";
        for(int j=n-1;j>=0;j--) {
            unsigned int arr1Result=arr1[i] >> j & 1;
            unsigned int arr2Result=arr2[i] >> j & 1;
            resultN+=to_string(arr1Result|arr2Result);
        }
        
        for(int si=0;si<resultN.length();si++) {
            if(resultN[si]=='1') {
                resultN[si]='#';
            }
            else if(resultN[si]=='0') {
                resultN[si]=' ';
            }
        }
        answer.push_back(resultN);
    }

    return answer;
}

 

비밀지도에서 '#'과 ' '(공백)을 표시하는 방법은

다름 아닌 2진수 표기법이다.

 

그러므로 비트 연산자를 사용하면

더욱 빠르고 간편하게 계산할 수 있다.

반응형