๋น๋ฐ์ง๋
๋ฌธ์
https://programmers.co.kr/learn/courses/30/lessons/17681
๋น๋ฐ์ง๋
๋ค์ค๋ ํ์ ํ๋ก๋๊ฐ ๋น์๊ธ์ ์จ๊ฒจ๋๋ ์ฅ์๋ฅผ ์๋ ค์ค ๋น๋ฐ์ง๋๋ฅผ ์์ ๋ฃ์๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๋น๋ฐ์ง๋๋ ์ซ์๋ก ์ํธํ๋์ด ์์ด ์์น๋ฅผ ํ์ธํ๊ธฐ ์ํด์๋ ์ํธ๋ฅผ ํด๋ ํด์ผ ํ๋ค. ๋คํํ ์ง๋ ์ํธ๋ฅผ ํด๋ ํ ๋ฐฉ๋ฒ์ ์ ์ด๋์ ๋ฉ๋ชจ๋ ํจ๊ป ๋ฐ๊ฒฌํ๋ค.
- ์ง๋๋ ํ ๋ณ์ ๊ธธ์ด๊ฐ
n
์ธ ์ ์ฌ๊ฐํ ๋ฐฐ์ด ํํ๋ก, ๊ฐ ์นธ์ ๊ณต๋ฐฑ(" ) ๋๋๋ฒฝ(#") ๋ ์ข ๋ฅ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. - ์ ์ฒด ์ง๋๋ ๋ ์ฅ์ ์ง๋๋ฅผ ๊ฒน์ณ์ ์ป์ ์ ์๋ค. ๊ฐ๊ฐ ์ง๋ 1๊ณผ ์ง๋ 2๋ผ๊ณ ํ์. ์ง๋ 1 ๋๋ ์ง๋ 2 ์ค ์ด๋ ํ๋๋ผ๋ ๋ฒฝ์ธ ๋ถ๋ถ์ ์ ์ฒด ์ง๋์์๋ ๋ฒฝ์ด๋ค. ์ง๋ 1๊ณผ ์ง๋ 2์์ ๋ชจ๋ ๊ณต๋ฐฑ์ธ ๋ถ๋ถ์ ์ ์ฒด ์ง๋์์๋ ๊ณต๋ฐฑ์ด๋ค.
- ์ง๋ 1๊ณผ ์ง๋ 2๋ ๊ฐ๊ฐ ์ ์ ๋ฐฐ์ด๋ก ์ํธํ๋์ด ์๋ค.
- ์ํธํ๋ ๋ฐฐ์ด์ ์ง๋์ ๊ฐ ๊ฐ๋ก์ค์์ ๋ฒฝ ๋ถ๋ถ์
1
, ๊ณต๋ฐฑ ๋ถ๋ถ์0
์ผ๋ก ๋ถํธํํ์ ๋ ์ป์ด์ง๋ ์ด์ง์์ ํด๋นํ๋ ๊ฐ์ ๋ฐฐ์ด์ด๋ค.
๋ค์ค๊ฐ ํ๋ก๋์ ๋น์๊ธ์ ์์ ๋ฃ์ ์ ์๋๋ก, ๋น๋ฐ์ง๋์ ์ํธ๋ฅผ ํด๋ ํ๋ ์์ ์ ๋์์ค ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.
์ ๋ ฅ ํ์
์
๋ ฅ์ผ๋ก ์ง๋์ ํ ๋ณ ํฌ๊ธฐ n
๊ณผ 2๊ฐ์ ์ ์ ๋ฐฐ์ด arr1
, arr2
๊ฐ ๋ค์ด์จ๋ค.
- 1 โฆ
n
โฆ 16 arr1
,arr2
๋ ๊ธธ์ดn
์ธ ์ ์ ๋ฐฐ์ด๋ก ์ฃผ์ด์ง๋ค.- ์ ์ ๋ฐฐ์ด์ ๊ฐ ์์
x
๋ฅผ ์ด์ง์๋ก ๋ณํํ์ ๋์ ๊ธธ์ด๋n
์ดํ์ด๋ค. ์ฆ, 0 โฆx
โฆ 2n - 1์ ๋ง์กฑํ๋ค.
์ถ๋ ฅ ํ์
์๋์ ๋น๋ฐ์ง๋๋ฅผ ํด๋
ํ์ฌ '#'
, ๊ณต๋ฐฑ
์ผ๋ก ๊ตฌ์ฑ๋ ๋ฌธ์์ด ๋ฐฐ์ด๋ก ์ถ๋ ฅํ๋ผ.
์ ์ถ๋ ฅ ์์
๋งค๊ฐ๋ณ์ | ๊ฐ |
---|---|
n | 5 |
arr1 | [9, 20, 28, 18, 11] |
arr2 | [30, 1, 21, 17, 28] |
์ถ๋ ฅ | ["#####","# # #", "### #", "# ##", "#####"] |
๋งค๊ฐ๋ณ์ | ๊ฐ |
---|---|
n | 6 |
arr1 | [46, 33, 33 ,22, 31, 50] |
arr2 | [27 ,56, 19, 14, 14, 10] |
์ถ๋ ฅ | ["######", "### #", "## ##", " #### ", " #####", "### # "] |
์ฝ๋
#include <string>
#include <vector>
using namespace std;
string numToString(int num){
string tmp;
while(num!=0){
if(num%2==1)
tmp.push_back('#');
else
tmp.push_back(' ');
num/=2;
}
string result;
for(int i=tmp.length()-1; i>=0; i--){
result.push_back(tmp[i]);
}
return result;
}
vector<string> solution(int n, vector<int> arr1, vector<int> arr2) {
vector<string> answer;
int size = arr1.size();
int max = 0;
for(int i=0; i<size; i++){
int tmp = (arr1[i] | arr2[i]);
answer.push_back(numToString(tmp));
if(max<tmp)
max=tmp;
}
int pow_num=0;
while(max>0){
max/=2;
pow_num++;
}
for(int i=0; i<size; i++){
if(answer[i].length()<pow_num){
int dif = pow_num-answer[i].length();
answer[i].insert(answer[i].begin(), dif,' ');
}
}
return answer;
}
ํ์ด
๊ทธ๋ฅ ํ์ด์ ๊ฐ ํ์ |(or) ์ฐ์ฐํ ํ, ํด๋น ์๋ฅผ 2์ง์๋ก ๋ณํํ์ฌ string์ผ๋ก ๋ณํํด์ฃผ๋ฉด ๋๋ค.
ํ๊ฐ์ง ์ฃผ์ํด์ผํ ์ ์ ํ์ ๊ธธ์ด๊ฐ ๊ฐ์ฅ ํฐ ๊ฒ์ ๋ง์ถฐ์ ธ์๋ค๋ ๊ฒ. ๋ฌผ๋ก ์ฝ๋ ์์ ์ ๊ฐ์ฅ ๊ธด ๊ธธ์ด์ ์ฝ๋๋ฅผ ์ฐพ์๋ ๋๋ค. ํ์ง๋ง ๋๋ ๋ค ์ฐจ๋ก๋ก ๊ณ์ฐํ๊ณ ๊ณ์ฐํ๋ ๊ณผ์ ์์ ๊ฐ์ฅ ๊ธด ๊ธธ์ด์ ์ฝ๋๋ฅผ ์ฐพ์์, string ์์ ๊ณต๋ฐฑ์ ๋ํด์ฃผ๋ ์์ผ๋ก ๊ตฌํํ๋ค.
์ถ๊ฐ
์ฌ๊ธฐ์ ํ์ด์ ๊ธธ์ด๊ฐ n์ผ๋ก ์ฃผ์ด์ ธ์์ผ๋ฏ๋ก ๊ฐ ์ซ์๋ 2^n๋ณด๋ค ์๋ค. ์ด ์ฌ์ค์ ์ด์ฉํ๋ฉด ๊ฐ์ฅ ๊ธด ๊ธธ์ด์ ์ฝ๋๋ฅผ ์ฐพ์ง ์์๋ n์ผ๋ก string ์์ ๊ณต๋ฐฑ์ ๋ํด์ค ์ ์์ ๊ฒ์ด๋ค.
์ฑ์ ๊ฒฐ๊ณผ
๋ค๋ฅธ ์ฌ๋์ ํ์ด
string์ด๋ผ๊ณ push_back, insert ๋ฑ์ ์ฐ์ฐ์ ๋๋ฌด ๋ง์ด ์ด ๊ฒ ๊ฐ๋ค. ์ฌ์ค + ์ฐ์ฐ์ผ๋ก๋ ์ถฉ๋ถํ ํ์ ์๋ ๊ฒ๋ค์ด์๋ค ^^..
๋ํ ์ค๊ฐ์ string์ ๋ค์ง์ ๋๋ reverse ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค๋ ๊ฒ์ ์์๋ค.
Comment