728x90
    
    
  

내 풀이
- 배열의 수를 이진법 string으로 만든다. 나머지로 나오는 숫자는 모두 char로 뽑아서 붙인 다음 리버스해줬다.
- 이진수들은 string 배열에 차례로 넣고 둘 중에 하나라도 1이면 벽, 즉 #을 넣고 아니면 공백을 담는다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
    vector<string> bin1, bin2;
    vector<string> combine;
    //이진법 만들기
    for (int i = 0; i < n; i++) {
        string tmp1, tmp2;
        for (int j = 0; j < n; j++) {
            //일의자리부터 들어감
            tmp1.push_back(arr1[i] % 2 + '0');
            tmp2.push_back(arr2[i] % 2 + '0');
            arr1[i] /= 2;
            arr2[i] /= 2;
        }
        reverse(tmp1.begin(), tmp1.end());
        reverse(tmp2.begin(), tmp2.end());
        bin1.push_back(tmp1);
        bin2.push_back(tmp2);
    }
    for (int i = 0; i < n; i++) {
        string tmp;
        for (int j = 0; j < n; j++) {
            bin1[i][j] == '1' || bin2[i][j] == '1' ? tmp.push_back('#') : tmp.push_back(' ');
        }
        combine.push_back(tmp);
    }
    return combine;
}
다른 사람의 풀이
- 십진수를 비트연산자로 비교해 이진수끼리 비교 후 조건에 맞게 바꾼 십진수를 처음 배열에 넣었다.
 → 불필요한 변환과정 X, 메모리 사용 감소, 코드 길이 감소
- string을 붙일 때 push_back 이나 += 대신 a = b + a; 방식을 사용해서 따로 리버스하지 않아도 됨.
- string이 아닌 int형 십진수가 대상이므로 [i][j]로 부르지 않고 시프트 연산자를 이용해 2씩 나눠줌.
 arr1[i] = arr1[i] >> 1; 은 arr1[i] /= 2; 와 같은 작업.
#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;
}'[C_C++]코딩테스트 연습 > [프로그래머스] level 1' 카테고리의 다른 글
| [C++] 프로그래머스 - 문자열 내 마음대로 정렬하기 (0) | 2021.07.22 | 
|---|---|
| [C++] 프로그래머스 - 다트 게임 (0) | 2021.07.21 | 
| [C++] 프로그래머스 - 3진법 뒤집기 (0) | 2021.07.18 | 
| [C++] 프로그래머스 - 실패율 (pair, sort - bool) (0) | 2021.07.18 | 
| [C++] 프로그래머스 - 숫자 문자열과 영단어 (0) | 2021.07.16 |