[C++로 풀이] 이진 변환 반복하기⭐⭐

Date:     Updated:

카테고리:

태그:

📌 이진 변환 반복하기

난이도 ⭐⭐

🚀 문제

image


🚀 내 풀이 ⭕

#include <string>
#include <vector>

using namespace std;

vector<int> solution(string s) {
    vector<int> answer(2);
    int count = 0;  // 이진 변환의 횟수
    int sum = 0;    // 제거된 모든 0의 개수
    
    while(s != "1"){
        int tempCount = 0;  // 해당 s의 1의 개수
        // s의 1의 개수 세기
        for(int i = 0; i < s.length(); i++)
            if (s[i] == '1')
                tempCount++;
        
        // s의 0의 개수 누적 합산
        sum += s.length() - tempCount;
        
        // 0제거한 x의 길이나 마찬가지인 tempCount를 2진법으로 표현
        s = "";
        while(tempCount > 0){
            if (tempCount % 2 == 0) s += "0";
            else s += "1";
            tempCount /= 2;
        }
        
        count++;

        // 사실 제대로 이진법으로 변환하려면 s를 reverse 해줘야하는데 어차피 해당 이진법을 구하는게 아닌 0의 개수, 1의 개수만 따지므로 reverse 하지 않아도 됨.
    }
    
    answer[0] = count;
    answer[1] = sum;
    return answer;
}


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Programmers 카테고리 내 다른 글 보러가기

댓글 남기기