본문 바로가기

Algorithm/카카오기출

[프로그래머스]비밀지도

문제

 

 

 

풀이

#include <string>
#include <vector>
#include <bitset>
using namespace std;

string to_binary(int num, int n) {
	string s = "";
	for(int i=0; i<n; i++){
        num % 2 == 0? s.insert(0," ") : s.insert(0, "#");
		num >>= 1; // /=2
	}
	return s;
}

vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
    vector<string> answer;
    for(int i=0; i<n; i++){
        answer.push_back(to_binary(arr1[i] | arr2[i], n));
    }
    return answer;
}

 

++ 추가

Java풀이

https://strong-2-min.tistory.com/295

 

[프로그래머스(Java)] 비밀지도 - Integer.toBinaryString

Level. 1 문제 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다.

strong-2-min.tistory.com

 


다른 사람 풀이

#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++){
        arr1[i] = arr1[i]|arr2[i];
        string ans = "";
        for(int j = 0; j<n; j++){
            if(arr1[i] % 2 == 0) ans = " " + ans;
            else ans = "#" + ans;
            arr1[i] = arr1[i] >> 1;
        }
        answer.push_back(ans);
    }
    return answer;
}

 

단순히 문자열이기 때문에, insert(index, "문자")를 쓰지 않고도 산술 연산자 +를 사용하여 같은 결과를 얻을 수 있었다.

 

 

 


https://notepad96.tistory.com/entry/C-Integer-to-Binary-2%EC%A7%84%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0?category=942290 

 

C++ Integer to Binary - 2진수 구하기

1. integer to binary 양의 정수를 2진수의 문자열로 변환하기 위해서는 1. bitset 컨테이너를 이용 2. >> 비트 연산을 이용 할 수 있다. bitset일 경우 선언 시 상수의 사이즈를 입력해야하므로 임의의 넉넉

notepad96.tistory.com