728x90
https://programmers.co.kr/learn/courses/30/lessons/70129
단순한 문제이다.
주어진 이진수를
1. 이진수에서 0을 제외한다. - deleteZero 함수 (pair <string, int>로 변환한 이진수와 지운 0의 개수를 반환한다)
2. 나온 이진수 결과물의 길이를 다시 이진수로 만든다. - convert 함수
3. 위의 과정을 반복하면서 최종적으로 1이 나오면 종료한다.
여기서 진행하면서 변환 횟수와 지운 0의 개수를 세서 반환하면 된다.
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
typedef pair<string, int> psi;
psi deleteZero(string target){
int zeroCnt = 0;
string result = "";
for(int i = 0 ; i < target.size() ; i++){
if(target[i] == '0'){
zeroCnt++;
}
else
result += target[i];
}
return {result, zeroCnt};
}
string convert(string target){
int before = target.size();
string after = "";
while(before){
after += to_string(before % 2);
before = before / 2;
}
reverse(after.begin(), after.end());
return after;
}
vector<int> solution(string s) {
vector<int> answer;
int totalZero = 0;
int cnt = 0;
while(s != "1"){
psi result = deleteZero(s);
totalZero += result.second;
s = convert(result.first);
cnt++;
}
answer.push_back(cnt);
answer.push_back(totalZero);
return answer;
}
728x90
'문제 풀이 > 프로그래머스 알고리즘, SQL' 카테고리의 다른 글
[프로그래머스 lv2] N개의 최소공배수 (최대공약수, 최소공배수) [C++] (0) | 2022.01.13 |
---|---|
[프로그래머스 2018 KAKAO BLIND RECRUITMENT 3차] 방금 그곡 (문자열, ) [C++] (0) | 2022.01.11 |
[프로그래머스 위클리 챌린지] 피로도 (완전탐색, next_permutation) [C++] (0) | 2022.01.04 |
[프로그래머스 2019 카카오 개발자 겨울 인턴십] 징검다리 건너기 (파라매트릭 서치) [C++] (0) | 2021.10.07 |
[프로그래머스 2019 카카오 개발자 겨울 인턴십] 불량 사용자 (DFS, 조합) [C++] (0) | 2021.10.07 |