https://school.programmers.co.kr/learn/courses/30/lessons/70129
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
0. Headers
#include <string>
#include <vector>
using namespace std;
1. 알고리즘
- 총 횟수 count, 0의 개수 zero 생성
- 조건이 1이 될때까지이므로 반복문 생성
- 1의 개수를 확인하고 전체의 개수에서 1의 개수를 빼면 0의 개수가 나옴
vector<int> solution(string s) {
int count = 0, zero = 0;
while(s != "1"){
int temp = 0;
for(int i = 0; i < s.length(); i++)
if (s[i] == '1') temp++;
zero += s.length() - temp;
}
}
- 그 후 1의 개수를 이진수로 변경
vector<int> solution(string s) {
while(s != "1"){
s = "";
while(temp > 0){
if (temp % 2 == 0) s += "0";
else s += "1";
temp /= 2;
}
reverse(s.begin(), s.end());
count++;
}
return {count, zero};
}
2. 완성 코드
#include <string>
#include <vector>
using namespace std;
vector<int> solution(string s) {
int count = 0, zero = 0;
while(s != "1"){
int temp = 0;
for(int i = 0; i < s.length(); i++)
if (s[i] == '1') temp++;
zero += s.length() - temp;
s = "";
while(temp > 0){
if (temp % 2 == 0) s += "0";
else s += "1";
temp /= 2;
}
reverse(s.begin(), s.end());
count++;
}
return {count, zero};
}