본문 바로가기
알고리즘 공부/프로그래머스 [C++]

프로그래머스 : [1차] 비밀지도 [C++]

by 이포터 2022. 11. 4.

문제 링크

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

 

문제 설명

네오가 프로도의 비상금을 손에 넣을 수 있도록, 비밀지도의 암호를 해독하는 작업을 도와줄 프로그램을 작성하라.

 

 

문제 입출력 예)

매개변수
n 5
arr1 [9, 20, 28, 18, 11]
arr2 [30, 1, 21, 17, 28]
출력 ["####", "# # #", "### #", "# ##", "#####"]

 

문제 풀이

비밀지도의 정보다 담긴 arr1과 arr2가 주어진다. 두개의 값이 합쳐졌을 때, 비밀지도의 암호를 해독할 수 있다.

arr1과 arr2를 or연산을 하고, 2진수로 바꾸어 간단하게 풀 수 있는 문제였다.

#include <string>
#include <vector>
#include <iostream>
#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++){
        string temp = "";
        arr1[i] = arr1[i] | arr2[i];
        while(temp.size() != n){
            if(arr1[i] % 2 == 1)
                temp.push_back('#');
            else
                temp.push_back(' ');
            arr1[i] /= 2;
        }
    reverse(temp.begin(), temp.end());
    answer.push_back(temp);
    }
    
    
        
    
    
    
    return answer;
}

 

리뷰

알고리즘 문제,,, Level1인데 왜이리어렵지 ㅠ

댓글