알고리즘 공부
비밀지도 - 카카오 2018
https://programmers.co.kr/learn/courses/30/lessons/17681
이진수 만들기 ; 2로 나눠서 나머지 있으면 1추가 하고 아니면 0이고
나중에 reverse(.begin(), .end()) 필요!!
아무것도 없는 vector에 푸시 안하고 배열로 넣기 안된다.
for(int i=0;i<n;i++) 랑 while(n–)랑 뭐가 다르지….? 이거 때문이었던듯..
int 값 비트계산 (and(&), or(|), not(~) xor(^)) 하면 비트값을 int로 바꾼거 나온다.
이거를 이진수로 바꿔주기만 하면 됨!!!
|| && 처럼 그냥 계산도 가능하다!!!!!
//1차시도
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> answer;
vector<string> answer1;
vector<string> answer2;
for (int i = 0; i<n; i++) {
string t = "";
int tmp = arr1[i];
while (n--) {
if (arr1[i] % 2==1) {
t += '#';
} else {
t += ' ';
}
tmp /= 2;
}
reverse(t.begin(), t.end());
answer1.push_back(t);
}
for (int i = 0; i<n; i++) {
string t = "";
int tmp = arr2[i];
while (n--) {
if (arr2[i] % 2==1) {
t += '#';
} else {
t += ' ';
}
tmp /= 2;
}
reverse(t.begin(), t.end());
answer2.push_back(t);
}
for (int i = 0; i < n; i++) {
string tmp = "";
for (int j = 0; j < n; j++) {
if (answer1[i][j] == '#' || answer2[i][j] == '#') {
tmp.push_back('#');
} else{
tmp.push_back(' ');
}
}
answer.push_back(tmp);
tmp.clear();
}
return answer;
}
//2차시도
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> answer;
for (int i = 0; i<n; i++) {
int tmp = arr1[i] | arr2[i];
string t = "";
for(int j = 0; j<n;j++) {
if ((tmp % 2)==1) {
t += '#';
} else {
t += ' ';
}
tmp /= 2;
}
reverse(t.begin(), t.end());
answer.push_back(t);
}
return answer;
}
소요 시간 ; 1시간 30분