1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <string>
#include <vector>
using namespace std;
 
int N;
vector<string> board1;
vector<string> board2;
vector<string> answer;
string Change(int num){
    string ans="";
    int s=(1<<N-1);
    while(s){
        if(num>=s){
            num=num%s;
            s=(s>>1);
            ans+="1";
        }else{
            s=(s>>1);
            ans+="0";
        }
    }
    return ans;
}
 
string Ret(string a,string b){
    string ans="";
    for(int i=0;i<N;i++){
        if( (a[i]=='1'|| (b[i]=='1') ){
            ans+="#";
        }else
            ans+=" ";     
    }
    return ans;
}
 
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
 
    N=n;
    for(int i=0;i<n;i++){
        board1.push_back(Change(arr1[i]));
        board2.push_back(Change(arr2[i]));
    }
    for(int i=0;i<n;i++){
        answer.push_back(Ret(board1[i],board2[i]));
    }
    
    return answer;
}
cs
#include <string>
#include <vector>
using namespace std;
int N;
vector<string> board1;
vector<string> board2;
vector<string> answer;
string Change(int num){
    string ans="";
    int s=(1<<N-1);
    while(s){
        if(num>=s){
            num=num%s;
            s=(s>>1);
            ans+="1";
        }else{
            s=(s>>1);
            ans+="0";
        }
    }
    return ans;
}
string Ret(string a,string b){
    string ans="";
    for(int i=0;i<N;i++){
        if( (a[i]=='1') || (b[i]=='1') ){
            ans+="#";
        }else
            ans+=" ";     
    }
    return ans;
}
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
 
    N=n;
    for(int i=0;i<n;i++){
        board1.push_back(Change(arr1[i]));
        board2.push_back(Change(arr2[i]));
    }
    for(int i=0;i<n;i++){
        answer.push_back(Ret(board1[i],board2[i]));
    }
    
    return answer;
}​

출처:https://school.programmers.co.kr/learn/courses/30/lessons/17681?language=cpp

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <string>
#include <vector>
using namespace std;
 
int N;
vector<string> answer;
string Change(int num){
    string ans="";
    int s=(1<<N-1);
    while(s){
        if(num>=s){
            num=num%s;
            s=(s>>1);
            ans+="#";
        }else{
            s=(s>>1);
            ans+=" ";
        }
    }
    return ans;
}
 
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
 
    N=n;
    
    for(int i=0;i<n;i++){
        arr1[i]=arr1[i] | arr2[i];
    }
    for(int i=0;i<n;i++){
        answer.push_back(Change(arr1[i]));
    }
    
    return answer;
}
cs

처음부터 OR연산하는 방법을 생각못했네요

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[c++] N으로 표현  (1) 2022.10.04
[c++] 아이템줍기 (BFS)  (1) 2022.09.29
[c++] 베스트앨범 (해쉬)  (0) 2022.09.23
[c++] 단속카메라 (그리디, 탐욕법)  (0) 2022.09.23
[c++] 야근 지수  (1) 2022.09.23

+ Recent posts