알고리즘/프로그래머스

2018 KAKAO BLIND RECRUITMENT (비밀지도)

칼퇴시켜주세요 2022. 11. 22. 21:42
728x90

문제를 보는 순간 비트연산이 떠올랐다. 내가 문제를 많이 안풀어봐서 그런가 카카오 문제가 뭔가 독특한거 같다.

비트연산은 해본 경험이 있지만 이를 문자열로 변환하거나 출력해본적이 없었다. 검색의 도움을 받아 "bitset" 이라는 헤더가 있다는 것을 알게 되었고 bitset<bit>(숫자) 형식으로 사용하고 to_string을 이용하여 문자열로 변환할 수 있었다.

 

풀이는 다음과 같다.

#include <string>
#include<vector>
#include<bitset>

using namespace std;

vector<string> solution(int n, vector<int> map1, vector<int> map2) {
    vector<string> answer;
    vector<int> result(n, 0);

	for(int i = 0; i < result.size(); i++)
	{

		result[i] = map1[i]|map2[i];
	}

	for(int i = 0; i < result.size(); i++)
	{
		string bitString = bitset<16>(result[i]).to_string();
		string temp = "";
		for(int j = 16 - n; j < 16; j++)
		{
			if(bitString[j] == '1')
			{
				temp.push_back('#');
			}
			else
			{
				temp.push_back(' ');
			}
		}
		answer.push_back(temp);
	}
    return answer;
}
반응형