링크 : https://school.programmers.co.kr/learn/courses/30/lessons/70129#
• s의 최대 길이가 150,000이기 때문에 이진 변환 할 때 int로 계산하면 안된다. int로 계산했더니 테스트 케이스 9, 10, 11 에서 실패가 떴고, string으로 계산해주니 통과했다.
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
vector<int> solution(string s) {
vector<int> answer;
int zero = 0;
int cnt = 0;
while(s != "1"){
int length = 0;
for(int i = 0; i < s.size(); i ++){
if(s[i] == '0'){
zero ++;
}
else{
length ++;
}
}
s = "";
while(length > 0){
if(length % 2 == 0) s += "0";
else s += "1";
length /= 2;
}
reverse(s.begin(), s.end());
// int two = 0;
// s = "";
// for(int i = 1; length > 0; i *= 10){
// int mod = length % 2;
// two += mod * i;
// length /= 2;
// }
// s = to_string(two);
cnt ++;
}
answer.push_back(cnt);
answer.push_back(zero);
return answer;
}