https://school.programmers.co.kr/learn/courses/30/lessons/70129?language=cpp
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
문제에서 제시한 대로
1. 0을 제거
2. 0을 제거한 수의 길이구한다.
3. 길이를 구한 수를 이진수로 바꾼다.
를 반복하면 된다.
아래 코드대로 이진수로 변환하면 4는 001이 되는데
0을 제거할거니까 뒤집어주지 않아도 된다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(string s) {
vector<int> answer;
int cnt=0,zero=0;
while(true)
{
string temp="";
//0제거 1111
int s_length=s.length();
for(int i=0;i<s_length;i++)
{
if(s[i]=='1')
temp+='1';
}
//0의 개수 : 전체 길이 - 1의 개수
zero+=(s_length-temp.size());
cnt++;
//1인지 체크
if(temp=="1")
break;
//길이를 int에 할당 4
int temp_int = temp.size();
//4를 이진수로 바꾸기
s="";
while(temp_int)
{
s+=(temp_int%2+'0');
temp_int/=2;
}
}
answer.push_back(cnt);
answer.push_back(zero);
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 소수 만들기 c++ (0) | 2023.09.26 |
---|---|
[프로그래머스] 2022 KAKAO TECH INTERNSHIP - 성격 유형 검사하기 (0) | 2023.09.21 |
[프로그래머스] 수식 최대화 c++ (0) | 2023.04.16 |
[프로그래머스] 배달 c++ (0) | 2023.04.01 |
[프로그래머스] 행렬 테두리 회전하기 (0) | 2023.03.24 |