프로그래머스/2레벨
이진 변환 반복하기/C++
Koalitsiya
2023. 1. 5. 13:46
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 방법
1. int형 count, countZero와 문자열 temp를 선언합니다.
2. 문자열 s의 i번째 문자가 0이면 countZero++을 하고 1이면 temp += "1"을 해줍니다.
3. 추가로 선언한 num에 temp.length()를 대입하고 문자열 s를 비워줍니다.
4. num이 0이 아닐 때까지 이진 변환을 반복합니다.
5. count++을 해주고 이를 s가 "1"이 될때까지 반복합니다.
6. 반복문이 끝나면 count와 countZero를 answer에 담고 리턴
#include <string>
#include <vector>
using namespace std;
vector<int> solution(string s) {
vector<int> answer;
int count = 0;
int countZero = 0;
while(s != "1") {
string temp = "";
for(int i = 0; i < s.length(); i++){
if(s[i] == '0')
countZero++;
else
temp += '1';
}
int num = temp.length();
s = "";
while(num > 0){
if(num % 2) s = "1" + s;
else s = "0" + s;
num /= 2;
}
count++;
}
answer.push_back(count);
answer.push_back(countZero);
return answer;
}