홍시홍의 프로그래밍

[2017 카카오 코딩테스트] 비밀 지도 본문

알고리즘 문제풀이/카카오

[2017 카카오 코딩테스트] 비밀 지도

홍시홍 2020. 7. 24. 00:10

분류 

시뮬레이션, 비트마스킹

요구사항

두개의 숫자를 or처리한 값을 2진수로 나타내기

풀이

bit연산에 대한 이해가 있으면 쉽게 풀 수 있다.

그리고 10진수->2진수 변환 방법을 알고 있다면 더더욱 쉽게 풀 수 있다.

or 처리한 결과(10진수)를 2진수로 바꾸어 1인 부분에 #을 출력하면 된다

 

#include <string>
#include <vector>
#include <iostream>
#include <queue>
#include <string.h>
#include <algorithm>
#include <deque>
#include <map>

using namespace std;
struct go{
    int x;
    int y;
    int z;
};
vector<int> v;
vector<int> v1;
int main(){

    
    v.push_back(46);
    v.push_back(33);
    v.push_back(33);
    v.push_back(22);
    v.push_back(31);
    v.push_back(50);
    v1.push_back(27);
    v1.push_back(56);
    v1.push_back(19);
    v1.push_back(14);
    v1.push_back(14);
    v1.push_back(10);
    
    for(int i=0 ; i < v.size() ; i++){
        deque<int> temp;
        int first = v[i];
        int second = v1[i];
        int new_num = v[i] | v1[i];
    //  cout<<"A"<<new_num<<endl;
        while(new_num){
    //      cout<<new_num<<endl;
            int div = new_num/2; //15
            int Nan = new_num%2;
        //  cout<<Nan<<endl;
            new_num /=2;
            temp.push_back(Nan);
        }
        for(auto j : temp){
            if(j==1){
                cout<<"#";
            }
            else{
                cout<<" ";
            }
        }
        cout<<endl;
    }
}
Comments