기계는 거짓말하지 않는다

[Programmers] 이진 변환 반복하기 본문

Programming Test

[Programmers] 이진 변환 반복하기

KillinTime 2021. 4. 30. 16:01

프로그래머스 - 이진 변환 반복하기 문제 입니다.

 

문제

 

문제 그대로 1인 문자 개수를 이진수로 변경하고 0인 문자를 계속 카운트 합니다.

이진수 문자열은 재귀함수를 사용했습니다.

 

#include <string>
#include <vector>

using namespace std;

string binaryNumber(int n) {
    if(n < 2) return to_string(n);
    
    return binaryNumber(n / 2) + to_string(n % 2);
}

vector<int> solution(string s) {
    vector<int> answer;
    int zeroCnt = 0, tryCnt = 0, i = 0;
    int len = 0;
    
    while(s.length() != 1) {
        for(i = 0; i < s.length(); i++) {
            if(s[i] == '1') len++;	// 1인 문자의 개수
            else zeroCnt++;
        }
        
        s = binaryNumber(len);	// 1인 문자 개수를 이진수 문자열로 변환
        len = 0;
        tryCnt++;	// 시행 횟수
    }
    
    answer.push_back(tryCnt);
    answer.push_back(zeroCnt);
    return answer;
}

'Programming Test' 카테고리의 다른 글

[Programmers] 올바른 괄호  (0) 2021.05.03
[Programmers] 등굣길  (0) 2021.05.02
[Programmers] 캐시  (0) 2021.04.30
[Programmers] 124 나라의 숫자  (0) 2021.04.29
[Programmers] 튜플  (0) 2021.04.27
Comments