[C++로 풀이] (비트 연산) 비밀 지도⭐
카테고리: Programmers
태그: Coding Test Algorithm
📌 비밀 지도
난이도 ⭐
🚀 문제
🚀 내 풀이 ⭕
#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이면 공백
- 1이면
- 비트 연산은
|
,&
를 사용하는데.. 평소처럼||
,&&
썼다가 뭐가 문제인지 한참 생각했네.. - 역시 string 벡터의 각 원소마다
append
를 해주기 위해선, 먼저 벡터를n
만큼 크기 잡아놓고 모든 원소를""
빈 문자열로 초기화해주어야 가능할 것이다.- 그냥 vector<string> answer(n); 라고만 해줘도 돌아가는걸 보니 벡터는 자동으로 원소들을 빈 문자열로 초기화시켜주나보다.
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기