관리 메뉴

Mini

프로그래머스 비밀지도 cpp python// 비트연산 문자열 본문

Algorithm/programmers

프로그래머스 비밀지도 cpp python// 비트연산 문자열

Mini_96 2023. 7. 11. 11:28

코딩테스트 연습 - [1차] 비밀지도 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

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

programmers.co.kr

 

* cpp

1.ret.push(arr1 or arr2)

2.IntToBin(ret)

3.n칸만큼 앞에 0채우기

4.1->#, 0->공백으로 answer에 push_back

#include <bits/stdc++.h>

using namespace std;

int N;
vector<int> v1, v2;
//v(크기,대상)
//vector<vector<int>> ret(16,vector<int>(16,0));
vector<int> ret;
vector<string> answer;
void opOr(){
    for(int i=0;i<v1.size();++i){
        ret.push_back(v1[i]|v2[i]);
    }
    //for(auto i: ret)  cout<<i<<" ";
    
}
vector<int> toBin(int n){
    vector<int> ret;
    
    while(n>=1){
        ret.push_back(n%2);
        n=n/2;
    }

    //ret.push_back(n);
    while(ret.size()<N){
        ret.push_back(0);
    }
    
    reverse(ret.begin(),ret.end());
    
    
    
    for(auto i:ret) cout<<i<<" ";
    return ret;
}
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
    v1=arr1; v2=arr2; N=n;
    
    opOr();
    //toBin(9);
    
    for(auto i:ret){
        vector<int> temp=toBin(i);  //0 1 0 0 1
        string s="";
        for(auto j:temp){
            if(j==1){
                s=s+"#";
            }
            else if(j==0){
                s=s+" ";
            }
        }
        answer.push_back(s);
    }

    return answer;
}

 

* python

- bin(31) //31을 0b11111으로 바꿔준다

- list[2:] //앞의 0,1 인덱스버린다 == 2번째부터만 리턴

- list.zfill(5) //5칸만큼 빈칸에 0채운거 리턴

- list.replace('1','#') //리스트의 1을 #으로 대체한거리턴, 연쇄사용가능

-list.append // cpp의 push_back과 유사

def solution(n, arr1, arr2):
    answer = []
    
    for i in range(n):   #i=0~n-1까지
        temp=(arr1[i] | arr2[i]) #temp=9or30 == 31
        binary=bin(temp)    #0b11111
        print(binary)
        binary=binary[2:]
        print(binary)       #11111
        binary=binary.zfill(n)     #zfill(칸수) : n칸만큼 앞에0으로 메꿔준다.
        binary=binary.replace('1','#').replace('0',' ')
        print(binary)
        answer.append(binary)   #push_back cpp == append py
    
    return answer