[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ์ด์ง„ํŠธ๋ฆฌ(C++)

2023. 8. 22. 11:43ยท๐Ÿ–ฅ๏ธ Study Note/Coding Test

https://school.programmers.co.kr/learn/courses/30/lessons/150367

๋ฌธ์ œ ์„ค๋ช…

๋‹น์‹ ์€ ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค.

์ด์ง„ํŠธ๋ฆฌ๋ฅผ ์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์ด์ง„์ˆ˜๋ฅผ ์ €์žฅํ•  ๋นˆ ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  2. ์ฃผ์–ด์ง„ ์ด์ง„ํŠธ๋ฆฌ์— ๋”๋ฏธ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํฌํ™” ์ด์ง„ํŠธ๋ฆฌ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  3. ๋งŒ๋“ค์–ด์ง„ ํฌํ™” ์ด์ง„ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ๋“ค์„ ๊ฐ€์žฅ ์™ผ์ชฝ ๋…ธ๋“œ๋ถ€ํ„ฐ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ๊นŒ์ง€, ์™ผ์ชฝ์— ์žˆ๋Š” ์ˆœ์„œ๋Œ€๋กœ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ๋…ธ๋“œ์˜ ๋†’์ด๋Š” ์‚ดํŽด๋ณด๋Š” ์ˆœ์„œ์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  4. ์‚ดํŽด๋ณธ ๋…ธ๋“œ๊ฐ€ ๋”๋ฏธ ๋…ธ๋“œ๋ผ๋ฉด, ๋ฌธ์ž์—ด ๋’ค์— 0์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์‚ดํŽด๋ณธ ๋…ธ๋“œ๊ฐ€ ๋”๋ฏธ ๋…ธ๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, ๋ฌธ์ž์—ด ๋’ค์— 1์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  5. ๋ฌธ์ž์—ด์— ์ €์žฅ๋œ ์ด์ง„์ˆ˜๋ฅผ ์‹ญ์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด์ง„ํŠธ๋ฆฌ์—์„œ ๋ฆฌํ”„ ๋…ธ๋“œ๊ฐ€ ์•„๋‹Œ ๋…ธ๋“œ๋Š” ์ž์‹ ์˜ ์™ผ์ชฝ ์ž์‹์ด ๋ฃจํŠธ์ธ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋…ธ๋“œ๋“ค๋ณด๋‹ค ์˜ค๋ฅธ์ชฝ์— ์žˆ์œผ๋ฉฐ, ์ž์‹ ์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹์ด ๋ฃจํŠธ์ธ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋…ธ๋“œ๋“ค๋ณด๋‹ค ์™ผ์ชฝ์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

์ฃผ์–ด์ง„ ์ด์ง„ํŠธ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ฃผ์–ด์ง„ ์ด์ง„ํŠธ๋ฆฌ์— ๋”๋ฏธ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํฌํ™” ์ด์ง„ํŠธ๋ฆฌ๋กœ ๋งŒ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋”๋ฏธ ๋…ธ๋“œ๋Š” ์ ์„ ์œผ๋กœ ํ‘œ์‹œํ•˜์˜€๊ณ , ๋…ธ๋“œ ์•ˆ์˜ ์ˆ˜๋Š” ์‚ดํŽด๋ณด๋Š” ์ˆœ์„œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋…ธ๋“œ๋“ค์„ ์™ผ์ชฝ์— ์žˆ๋Š” ์ˆœ์„œ๋Œ€๋กœ ์‚ดํŽด๋ณด๋ฉฐ 0๊ณผ 1์„ ์ƒ์„ฑํ•œ ๋ฌธ์ž์—ด์— ์ถ”๊ฐ€ํ•˜๋ฉด "0111010"์ด ๋ฉ๋‹ˆ๋‹ค. ์ด ์ด์ง„์ˆ˜๋ฅผ ์‹ญ์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด 58์ž…๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„๋•Œ, ํ•˜๋‚˜์˜ ์ด์ง„ํŠธ๋ฆฌ๋กœ ํ•ด๋‹น ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด์ง„ํŠธ๋ฆฌ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ์ˆ˜๋ฅผ ๋‹ด์€ 1์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด numbers๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. numbers์— ์ฃผ์–ด์ง„ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์˜ ์ด์ง„ํŠธ๋ฆฌ๋กœ ํ•ด๋‹น ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด 1์„, ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด 0์„ 1์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๋‚ด ํ’€์ด

๋ฌธ์ œ ์„ค๋ช…์ด ์–ด๋ ค์›Œ์„œ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด 3Level์ด์—ˆ๋‹ค;;

๊ฒฐ๊ตญ ๋ฌธ์ œ๋Š” ๋ถ„ํ•  ์ •๋ณต ๋ฌธ์ œ๋กœ, ๋‹ค์Œ์˜ ๋‚ด์šฉ๋งŒ ์ดํ•ดํ•˜๋ฉด ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

์ด์ง„์ˆ˜๋ฅผ ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•

: ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ๋Š” N^2 - 1 ๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ, ์ด์ง„์ˆ˜ ์•ž์— ๋ถ€์กฑํ•œ ๋…ธ๋“œ์˜ ์ˆ˜๋งŒํผ 0์„ ๋ถ™์ด๋ฉด ๋œ๋‹ค. ์•ž์— ๋ถ™์ด๋Š” ์ด์œ ๋Š” ์•ž์— 0์„ ๋ถ™์—ฌ์•ผ ๊ธฐ์กด์˜ ์ˆซ์ž์— ๋ณ€ํ•จ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ

  1. ์ค‘์•™ ๊ฐ’์ด 0์ธ ๊ฒฝ์šฐ (๋‹จ, ์ž์‹๋„ ๋ชจ๋‘ 0์ด๋ฉด ๊ฐ€๋Šฅ)
  2. ์ž์‹์„ ๊ทธ๋ฆด ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ. (์žฌ๊ท€ ์ด์šฉ)

์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ

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
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์ด๋ชจํ‹ฐ์ฝ˜ ํ• ์ธ ํ–‰์‚ฌ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉC++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.1 - ํฌ๋ ˆ์ธ ์ธํ˜•๋ฝ‘๊ธฐ ๊ฒŒ์ž„(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - 2xn ํƒ€์ผ๋ง(C++)
Beankong_
Beankong_
์ฃผ๋‹ˆ์–ด ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ณต๋ถ€ ๊ธฐ๋ก
  • Beankong_
    Beankong's Devlog
    Beankong_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด ๊ธ€ (146)
      • โ›… Daily (0)
      • ๐Ÿ–ฅ๏ธ Study Note (2)
        • C++ (1)
        • Unreal Engine (5)
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • ๐Ÿงญ Devlog (8)
        • ์˜ค๋‹ต๋…ธํŠธ (4)
        • UE5 GameLift Server Test Project (1)
        • TIL (3)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๋งํฌ

    • ๊ณต์ง€์‚ฌํ•ญ

    • ์ธ๊ธฐ ๊ธ€

    • ํƒœ๊ทธ

      ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
      UnrealEngine5
      ํ—ฌํ…Œ์ด์ปค
      unrealengine module
      ๊ฒŒ์ž„ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      ํ”„๋ฃŒ๊ทธ๋ž˜๋จธ์Šค
      UnrealEngine
      ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
      cpp
      propertyaccess
      ์•Œ๊ณ ๋ฆฌ์ฆ˜
      OnlineSubsystem
      ๊ฒŒ์ž„ ๋ชจ์ž‘
      ๊ฒŒ์ž„ ๊ฐœ๋ฐœ
      unrealengine build system
      ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      programmers
      ๊ทธ๋ž˜ํ”„ ์ˆœํšŒ
      ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
      ๊ทธ๋ฆฌ๋””(greedy)
    • ์ตœ๊ทผ ๋Œ“๊ธ€

    • ์ตœ๊ทผ ๊ธ€

    • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
    Beankong_
    [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ์ด์ง„ํŠธ๋ฆฌ(C++)
    ์ƒ๋‹จ์œผ๋กœ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”