원래나는
#include <string>
#include <vector>
#include <iostream>
using namespace std;
string TransformToBinary(string s)
{
int iLength = s.length();//s의 길이값이 나온다. -> 이 길이값을 다시 이진변환 해야함
string sTemp;
while(iLength>0)
{
int iResult = iLength%2;//나머지
sTemp = to_string(iResult) + sTemp;//
iLength = iLength/2;
sTemp = to_string(iLength)+sTemp;
}
return sTemp;
}
vector<int> solution(string s) {
vector<int> answer;
int iFirst = 0;
int iSecond = 0;
while(1)
{
iFirst++;
string sTemp;
for(int i=0; i<s.length(); i++)
{
if(s[i]=='1') sTemp+=s[i];
else iSecond++;
}
s = TransformToBinary(sTemp);
if(s == "1") break;
}
answer.push_back(iFirst);
answer.push_back(iSecond);
return answer;
}
이렇게했는데 계속 시간초과 뜸
#include <string>
#include <vector>
using namespace std;
vector<int> solution(string s) {
vector<int> answer(2, 0);
int zero = 0, round = 0;
while(s != "1")
{
string tmp = "";
int size = 0, num;
round++;
for(int i = 0; i < s.size(); i++)
{
if(s[i] == '0')
zero++;
else
tmp += "1";
}
num = tmp.size();
s = "";
while(num > 0)
{
s += to_string(num % 2);
num /= 2;
}
}
answer[0] = round;
answer[1] = zero;
return answer;
}
[[[[[[[[[[[[[[[[[[[[[진법변환중요]]]]]]]]]]]]]]]]]]]]
while(num > 0)
{
s += to_string(num % 2);
num /= 2;
}
이렇게 해서 컴팩하게 가져가자.