본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[프로그래머스 1 / c++] 비밀 지도

by tokkiC 2022. 6. 22.

처음 설계는 n개 자리의 2진수를 구해서 그 이진수의 1과 0을 각각 기호로 바꿔준다는 로직이었는데...

c++은 의외로 2진수를 나타내기가 힘들었다. 2진수를 구해서 나타내려고 해도

상수가 아닌 n의 자리 까지의 2진수를 구하는 방법은 찾기 힘들었다.

이진수를 bitset 이라는 함수를 이용해서 나타낼 수 있다고 하여 열심히 해보았지만 자리수가 상수여야 가능하지

변수로 주어지면 런타임 에러가 났다. 어떻게 방법을 찾느라 몇시간째 찾아보았지만

결국은 포기... 그냥 나눌때마다 나오는 나머지 값을 기호로 바꾸어 string에 붙여주어 만들면 쉽게 풀리는 문제였다

c++ 에서 2진수로 변환은 생각보다 까다로운 것 같다... 일단은 쉽게 생각하자 그래야 풀수있는게 많다! 

#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++){
        int a, b;
        a=arr1[i];
        b=arr2[i];
        string r="";
        for(int j=0; j<n; j++){
            if(a%2==0 && b%2==0)
                r=" "+r;
            else
                r="#"+r;
            a/=2;
            b/=2;
        }
        answer.push_back(r);
    }
    return answer;
}

댓글