티스토리 뷰
입출력 예제
n : 5
arr1 : [9,20,28,18,11]
arr2 : [30,1,21,17,28]
return : ["#####","# # #","### #","# ##",'#####"]
문제해설
이번 문제를 풀려면 비트연산인 | 연산을 이용하면 바로 내가 원하는 값이 나오고 그것을 2진수로 바꾸는 과정을 이용해서 해결할 수 있습니다.
저는 string에 5개의 공간을 공백으로 만들고 2로 나누면서 나머지가 존재하면 뒤에서부터 #을 채우는 방식으로 2진수로 만들었습니다.
소스코드
#include <string> #include <vector> using namespace std; vector<string> solution(int n, vector<int> arr1, vector<int> arr2) { vector<string> answer(n); for (int i = 0; i < n; i++) { int k = arr1[i] | arr2[i]; answer[i].assign(" ",n); for (int j = n - 1; j >= 0; j--) { if (k % 2 == 0) answer[i][j] = ' '; else answer[i][j] = '#'; k /= 2; } } return answer; }
'알고리즘 > 프로그래머스(C++)' 카테고리의 다른 글
[프로그래머스/알고리즘] 다트 게임 (0) | 2019.02.07 |
---|---|
[프로그래머스/알고리즘] 캐시 (0) | 2019.02.07 |
[프로그래머스/알고리즘] 도둑질 (0) | 2019.01.20 |
[프로그래머스/알고리즘] 예산 (0) | 2019.01.20 |
[프로그래머스/알고리즘] 단속카메라 (0) | 2019.01.14 |