문제
input :
0과 1로 이루어진 어떤 문자열 x
1. x의 모든 0을 제거
2. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 변환
return :
x가 "1"이 될 때까지 계속해서 x에 변환을 가했을 때의
[이진 변환의 횟수, 변환 과정에서 제거된 모든 0의 개수]
ex)
x = "0111010"이라면,
x = "0111010" -> 0제거 -> "1111" -> 4("1111"의 길이) 이진변환 -> "100"
[3,5] return
풀이
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
vector<int> solution(string s) {
vector<int> answer={0,0};
int zero=0,ztotal=0,cnt=0,len=0;
string cp=s;
if(cp=="1") return answer;
while(cp!="1"){
cnt++; //이진변환 횟수
zero=0;
for(int i=0;i<cp.length();i++){
if(cp[i]=='0')zero++;
}
ztotal+=zero; //제거한 0개수
len = cp.length()-zero;
string bin="";
while(len){
bin+=to_string(len%2);
len/=2;
}
reverse(bin.begin(),bin.end());
cp=bin;
}
answer[0]=cnt;
answer[1]=ztotal;
return answer;
}
반응형
'Problem Solving > Programmers' 카테고리의 다른 글
프로그래머스 (Level 2) : 영어 끝말잇기 /C++, map (해쉬, 딕셔너리) (0) | 2022.10.09 |
---|---|
프로그래머스 (Level 2) : 피보나치 수 /C++ /DP, 메모이제이션 (0) | 2022.10.08 |
프로그래머스 (Level 1) : 핸드폰 번호 가리기 / C++ (string, substr) (0) | 2022.10.06 |
프로그래머스 (Level 2) : 게임 맵 최단거리/ Python/ 너비 우선 탐색(BFS, deque) (0) | 2022.08.24 |
프로그래머스 (Level 2) : JadenCase 문자열 만들기 / Python (0) | 2022.08.22 |