ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그래머스 비밀지도 C++
    프로그래머스(Programmers) 2022. 3. 13. 11:46
    반응형

    문제 설명 

     

    => 단순구현문제였습니다. 

    => 10진수로 주어진 숫자를 2진수 숫자로 변환하여 string형 vector 변수로 표현하여야 합니다. 

    string Binary(int num , int digit) // 십진수, 자릿수
    {
        string s = bitset<16>(num).to_string();  //< > 안에 있는 숫자는 몇자리까지 표현할지를 정한다.
        string value = s.substr(16-digit);  // substr을 통해 필요한 숫자만큼만 쓴다. 
        return value; 
    }

    => 위는 10진수를 2진수로 표현하는 방법입니다. 필요한 자릿수만큼 사용하기 위해 substr 함수를 이용하였습니다. 

    => 두 string형 vector map1 과 map2를 비교하여 둘중에 하나라도 벽이 있으면 '#'을 넣어주고, 아닐 경우  ' '을 넣어주어야 합니다. 

     

    #include <string>
    #include <vector>
    #include <bitset>
    #include <iostream>
    
    using namespace std;
    
    string Binary(int num , int digit) // 십진수, 자릿수
    {
        string s = bitset<16>(num).to_string();
        string value = s.substr(16-digit);
        return value; 
    }
    
    vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
        vector<string> finalMap;
        
        vector<string> map1; //첫번째 map 
        vector<string> map2; //두번째 map
        
        for(auto k : arr1)
        {
            string s = Binary(k, n);
            map1.push_back(s);
        }
        
        for(auto p : arr2)
        {
            string s = Binary(p, n);
            map2.push_back(s);
        }
        
        string fMapEle ="";//finalMap에 넣을 원소
       for(int i=0; i<n; i++)
       {   
           for(int j=0; j<n; j++)
           {
               if((map1[i][j] == '1') || (map2[i][j]=='1')) // 둘중에 하나라도 벽이 있으면 
                   fMapEle.push_back('#');
               else fMapEle.push_back(' '); //둘다 벽이 없으면
           }
        finalMap.push_back(fMapEle);
        fMapEle =""; //원소초기화
       }
        
        return finalMap;
    }

     

    반응형

    댓글

Designed by Who.