https://school.programmers.co.kr/learn/courses/30/lessons/150367
๋ฌธ์ ์ค๋ช
๋น์ ์ ์ด์งํธ๋ฆฌ๋ฅผ ์๋ก ํํํ๋ ๊ฒ์ ์ข์ํฉ๋๋ค.
์ด์งํธ๋ฆฌ๋ฅผ ์๋ก ํํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ด์ง์๋ฅผ ์ ์ฅํ ๋น ๋ฌธ์์ด์ ์์ฑํฉ๋๋ค.
- ์ฃผ์ด์ง ์ด์งํธ๋ฆฌ์ ๋๋ฏธ ๋ ธ๋๋ฅผ ์ถ๊ฐํ์ฌ ํฌํ ์ด์งํธ๋ฆฌ๋ก ๋ง๋ญ๋๋ค. ๋ฃจํธ ๋ ธ๋๋ ๊ทธ๋๋ก ์ ์งํฉ๋๋ค.
- ๋ง๋ค์ด์ง ํฌํ ์ด์งํธ๋ฆฌ์ ๋ ธ๋๋ค์ ๊ฐ์ฅ ์ผ์ชฝ ๋ ธ๋๋ถํฐ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ๋ ธ๋๊น์ง, ์ผ์ชฝ์ ์๋ ์์๋๋ก ์ดํด๋ด ๋๋ค. ๋ ธ๋์ ๋์ด๋ ์ดํด๋ณด๋ ์์์ ์ํฅ์ ๋ผ์น์ง ์์ต๋๋ค.
- ์ดํด๋ณธ ๋ ธ๋๊ฐ ๋๋ฏธ ๋ ธ๋๋ผ๋ฉด, ๋ฌธ์์ด ๋ค์ 0์ ์ถ๊ฐํฉ๋๋ค. ์ดํด๋ณธ ๋ ธ๋๊ฐ ๋๋ฏธ ๋ ธ๋๊ฐ ์๋๋ผ๋ฉด, ๋ฌธ์์ด ๋ค์ 1์ ์ถ๊ฐํฉ๋๋ค.
- ๋ฌธ์์ด์ ์ ์ฅ๋ ์ด์ง์๋ฅผ ์ญ์ง์๋ก ๋ณํํฉ๋๋ค.
์ด์งํธ๋ฆฌ์์ ๋ฆฌํ ๋ ธ๋๊ฐ ์๋ ๋ ธ๋๋ ์์ ์ ์ผ์ชฝ ์์์ด ๋ฃจํธ์ธ ์๋ธํธ๋ฆฌ์ ๋ ธ๋๋ค๋ณด๋ค ์ค๋ฅธ์ชฝ์ ์์ผ๋ฉฐ, ์์ ์ ์ค๋ฅธ์ชฝ ์์์ด ๋ฃจํธ์ธ ์๋ธํธ๋ฆฌ์ ๋ ธ๋๋ค๋ณด๋ค ์ผ์ชฝ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๋ค์์ ์ด์งํธ๋ฆฌ๋ฅผ ์๋ก ํํํ๋ ์์์ ๋๋ค.
์ฃผ์ด์ง ์ด์งํธ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฃผ์ด์ง ์ด์งํธ๋ฆฌ์ ๋๋ฏธ๋ ธ๋๋ฅผ ์ถ๊ฐํ์ฌ ํฌํ ์ด์งํธ๋ฆฌ๋ก ๋ง๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋๋ฏธ ๋ ธ๋๋ ์ ์ ์ผ๋ก ํ์ํ์๊ณ , ๋ ธ๋ ์์ ์๋ ์ดํด๋ณด๋ ์์๋ฅผ ์๋ฏธํฉ๋๋ค.
๋ ธ๋๋ค์ ์ผ์ชฝ์ ์๋ ์์๋๋ก ์ดํด๋ณด๋ฉฐ 0๊ณผ 1์ ์์ฑํ ๋ฌธ์์ด์ ์ถ๊ฐํ๋ฉด "0111010"์ด ๋ฉ๋๋ค. ์ด ์ด์ง์๋ฅผ ์ญ์ง์๋ก ๋ณํํ๋ฉด 58์ ๋๋ค.
๋น์ ์ ์๊ฐ ์ฃผ์ด์ก์๋, ํ๋์ ์ด์งํธ๋ฆฌ๋ก ํด๋น ์๋ฅผ ํํํ ์ ์๋์ง ์๊ณ ์ถ์ต๋๋ค.
์ด์งํธ๋ฆฌ๋ก ๋ง๋ค๊ณ ์ถ์ ์๋ฅผ ๋ด์ 1์ฐจ์ ์ ์ ๋ฐฐ์ด numbers๊ฐ ์ฃผ์ด์ง๋๋ค. numbers์ ์ฃผ์ด์ง ์์๋๋ก ํ๋์ ์ด์งํธ๋ฆฌ๋ก ํด๋น ์๋ฅผ ํํํ ์ ์๋ค๋ฉด 1์, ํํํ ์ ์๋ค๋ฉด 0์ 1์ฐจ์ ์ ์ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๋ด ํ์ด
๋ฌธ์ ์ค๋ช ์ด ์ด๋ ค์์ ์ดํดํ๋ ๊ฒ์ด 3Level์ด์๋ค;;
๊ฒฐ๊ตญ ๋ฌธ์ ๋ ๋ถํ ์ ๋ณต ๋ฌธ์ ๋ก, ๋ค์์ ๋ด์ฉ๋ง ์ดํดํ๋ฉด ํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
์ด์ง์๋ฅผ ํฌํ ์ด์ง ํธ๋ฆฌ๋ก ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ
: ํฌํ ์ด์ง ํธ๋ฆฌ๋ N^2 - 1 ๊ฐ์ ๋ ธ๋๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก, ์ด์ง์ ์์ ๋ถ์กฑํ ๋ ธ๋์ ์๋งํผ 0์ ๋ถ์ด๋ฉด ๋๋ค. ์์ ๋ถ์ด๋ ์ด์ ๋ ์์ 0์ ๋ถ์ฌ์ผ ๊ธฐ์กด์ ์ซ์์ ๋ณํจ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ด์ง ํธ๋ฆฌ๋ฅผ ํํํ ์ ์๋ ๊ฒฝ์ฐ
- ์ค์ ๊ฐ์ด 0์ธ ๊ฒฝ์ฐ (๋จ, ์์๋ ๋ชจ๋ 0์ด๋ฉด ๊ฐ๋ฅ)
- ์์์ ๊ทธ๋ฆด ์ ์๋ ๊ฒฝ์ฐ. (์ฌ๊ท ์ด์ฉ)
์ฐธ๊ณ ๋ธ๋ก๊ทธ
https://algosu.tistory.com/152
#include <string>
#include <vector>
using namespace std;
string HexToDec(long long number);
string FillBinary(string number);
int CanDraw(string number);
bool IsAllZero(string number);
vector<int> solution(vector<long long> numbers) {
vector<int> answer;
for(auto& n : numbers)
{
string decimal_number = HexToDec(n);
string perfect_binary_number = FillBinary(decimal_number);
answer.emplace_back(CanDraw(perfect_binary_number));
}
return answer;
}
string HexToDec(long long number)
{
string result;
while(number > 0)
{
result = to_string(number % 2) + result;
number /= 2;
}
return result;
}
string FillBinary(string number)
{
string result;
int size = 1;
while(true)
{
if(number.length() <= size-1)
break;
size *= 2;
}
string zero;
for(int i = number.length(); i < size-1; ++i)
{
zero += '0';
}
result = zero + number;
return result;
}
int CanDraw(string number)
{
if(number.size() == 1 || IsAllZero(number))
return true;
int mid_idx = number.size()/2;
string left = number.substr(0, mid_idx);
string right = number.substr(mid_idx+1);
if(number[mid_idx] == '1' && CanDraw(left) && CanDraw(right))
return true;
return false;
}
bool IsAllZero(string number)
{
for(const auto& n : number)
{
if(n != '0')
return false;
}
return true;
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ์ด๋ชจํฐ์ฝ ํ ์ธ ํ์ฌ(C++) (1) | 2023.08.28 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ์คํ์ฑํ ๋ฐฉC++) (0) | 2023.08.25 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.1 - ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์(C++) (2) | 2023.08.10 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - 2xn ํ์ผ๋ง(C++) (0) | 2023.08.08 |
[ํ๋ก๊ทธ๋๋จธ์ค]level.2 - ๋ํ์ค ๊ฒ์(C++) (0) | 2023.08.07 |