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

 

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

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

programmers.co.kr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#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++)
    {
        //arr1 과 arr2를 OR 연산자로 비교하여 , 완성된 지도를 얻는다.
        int compare = arr1[i] | arr2[i];
        string s = "";
        for (int j = n - 1; j >= 0; j--)
        {
            //1을 왼쪽으로 j번 이동해서 비교한다(시프트연산). AND 연산자로 비교한다.
            if (compare & (1 << j))s += "#"//1이 있을 경우 s 에 #을 추가한다.
            else s += " "//0일 경우 s에 공백을 추가한다.
        }
        answer.push_back(s); //모든 열을 검사한 후 해당 문자열 s를 answer에 푸쉬한다.
    }//이 과정을 n번 반복한다.
    return answer;
}

참고글 https://greenapple16.tistory.com/97

 

[프로그래머스] 비밀지도

2018 KAKAO BLIND RECRUITMENT 1차 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 | 프로그래머스 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장..

greenapple16.tistory.com

비트 연산을 개념만 알고 있었지 실제로 써본 적은 없었는데,

위의 글을 참고하면서 사용해보니 확실히 이해된 것 같다.

+ Recent posts