알고리즘/프로그래머스

[프로그래머스] [1차] 비밀지도 C++ (Lv.1)

lheunoia 2023. 5. 15. 15:47

 

 

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/17681

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

이번 문제는 2018 KAKAO BLIND RECRUITMENT 문제였습니다.

 

 

 

 

 

📝 문제 풀이

1. 두 지도의 각 가로열을 or 연산 (지도 중 어느 하나라도 1이면 전체 지도에서도 1이므로)

2. 1의 결과값을 소인수분해

  • 2로 나누어 떨어지면 tmp += " "
  • 2로 나누어 떨어지지 않으면 tmp += "#"

3. tmp 값 뒤집기

 

 

 

 

 

👩🏻‍💻 C++ 코드

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
    vector<string> answer;
    
    for (int i=0; i<n; i++) {
        int num = arr1[i] | arr2[i];
        string tmp = "";
        
        while (tmp.length() != n) {
            if (num % 2 == 0) tmp += " ";
            else tmp += "#";
            
            num /= 2;
        }
        
        reverse(tmp.begin(), tmp.end());
        answer.push_back(tmp);
    }
    
    return answer;
}

 

프로그래머스 - 결과 화면

 

 

 

 

반응형