๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๐Ÿ”—๋ฌธ์ œ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ‘จ‍๐Ÿ’ปํ’€์ด ๊ณผ์ •

 

์‚ฌ์‹ค์ƒ ํ’€์ด ๊ณผ์ •์ด๋ผ ํ•  ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ์—์„œ ์ œ์‹œํ•œ ๋‚ด์šฉ ๊ทธ๋Œ€๋กœ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

โœ๏ธ์†Œ์Šค ์ฝ”๋“œ ๋ฐ ๊ฒฐ๊ณผ

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

string RemoveZero(const string& str, int& removedZeroCount) {
    string result;

    for (const auto element : str) {
        if (element == '1') {
            result.push_back('1');
            continue;
        }

        removedZeroCount++;
    }
    return result;
}

string ConvertBinary(const string& oneBinary) {
    string result;
    int targetNum = oneBinary.length();

    while (true) {
        int remainder = targetNum % 2;
        targetNum /= 2;

        char numericChar = remainder + '0';
        result.push_back(numericChar);

        if (targetNum == 0)
            break;
    }

    reverse(result.begin(), result.end());
    return result;
}

bool IsCanBinaryConverting(const string& str) {
    return str.length() > 1;
}

vector<int> solution(string s) {
    int removedZeroCount = 0;
    int binaryConvertingCount = 0;
    string temp = s;

    while (true) {
        binaryConvertingCount++;
        string removedZero = RemoveZero(temp, removedZeroCount);

        if (IsCanBinaryConverting(removedZero)) {
            temp = ConvertBinary(removedZero);
            continue;
        }

        break;
    }

    vector<int> answer {binaryConvertingCount, removedZeroCount};
    return answer;
}

 

728x90
๋ฐ˜์‘ํ˜•