[C++로 풀이] (비트 연산) 비밀 지도⭐

Date:     Updated:

카테고리:

태그:

📌 비밀 지도

난이도 ⭐

🚀 문제

image

image


🚀 내 풀이 ⭕

#include <string>
#include <vector>

using namespace std;

vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
    vector<string> answer(n, "");
    
    for(int i = 0; i < n; i++)
    {
        int temp = arr1[i] | arr2[i];
        
        for (int j = n - 1; j >= 0; j--)
        {
            if ((temp & (1 << j)) != 0)
                answer[i].append("#");
            else
                answer[i].append(" ");
        }
    }
    
    return answer;
}
  • temp의 최상위 비트부터 검사함 (append 쓰려고 이렇게 했다..) 각 자리마다 1인지 0인지를 검사한다. (temp & (1 « j)) != 0 조건식을 통해!
    • 1이면 #, 0이면 공백
  • 비트 연산은 |, & 를 사용하는데.. 평소처럼 ||, && 썼다가 뭐가 문제인지 한참 생각했네..
  • 역시 string 벡터의 각 원소마다 append를 해주기 위해선, 먼저 벡터를 n만큼 크기 잡아놓고 모든 원소를 "" 빈 문자열로 초기화해주어야 가능할 것이다.
    • 그냥 vector<string> answer(n); 라고만 해줘도 돌아가는걸 보니 벡터는 자동으로 원소들을 빈 문자열로 초기화시켜주나보다.


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Programmers 카테고리 내 다른 글 보러가기

댓글 남기기