[프로그래머스] [1차] 비밀지도△
in CodingTest
그동안 유니티 프로젝트를 만들다 보니 오랜만에 알고리즘 문제를 풀어보았다. 오랜만이라 처음엔 키워드도 잘 기억안나서 답답했지만 금방 다시 익숙해진 기분이다. 물론 지금 내가 문제를 푸는 방식은 문제를 풀긴 하지만 좋은 방법이 아니란 것은 알 수 있다. 그래서 제목에 △가 있는 것이다. 나중에라도 꼭 다시 풀어봐야겠다. 이번 문제는 어려운 부분이 없었다.
#include <string>
#include <vector>
#include <deque>
using namespace std;
deque<int> ChangeNum(int n) {
deque<int> t_dq;
while (n != 0) {
int temp = n % 2;
t_dq.push_front(temp);
n = n / 2;
}
return t_dq;
}
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
string tempAnswer;
vector<string> answer;
deque<int> arr1_dq;
deque<int> arr2_dq;
deque<int> temp_dq;
for (int i = 0; i < arr1.size(); i++) {
arr1_dq = ChangeNum(arr1[i]);
arr2_dq = ChangeNum(arr2[i]);
if (arr1_dq.size() < n) {
for (int i = arr1_dq.size(); i != n; i++) {
arr1_dq.push_front(0);
}
}
if (arr2_dq.size() < n) {
for (int i = arr2_dq.size(); i != n; i++) {
arr2_dq.push_front(0);
}
}
for (int i = 0; i < arr2_dq.size(); i++) {
temp_dq.push_back(arr1_dq[i] + arr2_dq[i]);
}
for (int i = 0; i < temp_dq.size(); i++) {
if (temp_dq[i] == 0) {
tempAnswer.append(" ");
}
else {
tempAnswer.append("#");
}
}
answer.push_back(tempAnswer);
tempAnswer.clear();
temp_dq.clear();
}
return answer;
}