풀이 과정
단순한 문제인데 생각보다 시간을 많이 뺏긴 문제이다.
s가 1이 아닐 때 반복문을 계속 돌려주고, 0의 개수를 세며
전체 길이에서 0의 개수를 뺀 수를 다시 2진수로 만들면 된다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string Binary(int n){
string str = "";
while(n != 0){
str += to_string(n % 2);
n /= 2;
}
reverse(str.begin(), str.end());
return str;
}
vector<int> solution(string s) {
vector<int> answer;
int cnt = 0, sum = 0; // 회차, 0개수
while(s != "1"){
int cnt0 = 0, num;
for(int i = 0; i < s.size(); i++){
if(s[i] == '0') cnt0++;
num = s.size() - cnt0;
}
sum += cnt0;
s = Binary(num);
cnt++;
}
answer.push_back(cnt);
answer.push_back(sum);
return answer;
}
'🍞 Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스][Level2] 피로도 c++ (0) | 2022.10.21 |
---|---|
[프로그래머스][Level2] 줄 서는 방법 c++ (0) | 2022.10.21 |
[프로그래머스][Level2] 오픈채팅방 c++ (0) | 2022.10.21 |
[프로그래머스][Level2] 영어 끝말잇기 c++ (0) | 2022.10.21 |
[프로그래머스][Level2] 수식 최대화 c++ (0) | 2022.10.21 |