728x90
반응형
문제 설명
해당 문제는 두 개의 정수 배열을 이진수로 해석해 겹쳐진 비밀지도를 해독하는 문제이다.
지도는 정사각형 형태이며, 두 지도의 각 줄을 OR 연산한 결과를 통해 벽(#) 또는 공백( )을 판단한다. 이때 OR 연산의 결과가 1인 경우 벽으로, 0인 경우 공백으로 처리한다.
핵심 아이디어
비트 연산 OR을 활용해 벽이 하나라도 존재하면 벽으로 표시
이진수로 변환 후, 1이면 '#', 0이면 ' '으로 변환
자릿수 맞추기: 항상 n자리로 표현되도록 한다.
#include <string>
#include <vector>
using namespace std;
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> answer; // 최종 결과를 담을 문자열 벡터
for(int i = 0; i < n; i++) // 각 행마다 처리
{
string row = ""; // 현재 행의 결과를 저장할 문자열
int line = arr1[i] | arr2[i]; // 두 지도에서 OR 연산 수행 (벽이 하나라도 있으면 벽)
for(int j = 0; j < n; j++) // 오른쪽부터 한 비트씩 확인
{
// 맨 끝 비트를 확인하여 1이면 벽, 0이면 공백을 추가
row = ((line & 1) ? "#" : " ") + row;
line = line >> 1; // 다음 비트를 보기 위해 오른쪽으로 쉬프트
}
answer.push_back(row); // 완성된 한 줄을 결과 벡터에 추가
}
return answer; // 최종 지도 반환
}
728x90
반응형
'프로그래밍 > 코딩테스트' 카테고리의 다른 글
코딩테스트 : 숫자 문자열과 영단어 (0) | 2025.04.17 |
---|---|
코딩테스트 : 문자열 내 마음대로 정렬하기 (0) | 2025.04.17 |
코딩테스트 : 추억 점수 (0) | 2025.04.17 |
코딩테스트 : 폰켓몬 (0) | 2025.04.17 |
코딩테스트 : 2016년 (0) | 2025.04.17 |