티스토리 뷰

문제 링크

 

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

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

programmers.co.kr

 

풀이

해당 문제는 비트연산으로 해결하였다.

겹칠 때는 논리합을 사용하고 msb와 비교하며 '#'을 집어넣고 0이면 " "을 집어넣었다.

temp 변수를 계산 끝나고 지워주는 역할도 temp &= ~msb로 하였다.

 

 

 

더보기
#include <string>
#include <vector>
#include <iostream>

using namespace std;

vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
    vector<string> answer(n);
    int temp;
    int msb = 0x1 << n-1;
    
    for(int i=0; i<n; i++)
    {
        temp = arr1[i] | arr2[i];
        for(int j=0; j<n; j++)
        {
            if(((temp<<j) & msb) != 0)
            {
                answer[i] += "#";
            }
            else
            {
                answer[i] += " ";
            }
            temp &= ~msb;
        }
    }
    return answer;
}
728x90
반응형
댓글
05-15 00:10
링크