알고리즘/프로그래머스 1단계
프로그래머스 - 문자열 나누기 - C++
게임만드는학생
2024. 7. 23. 15:46
https://school.programmers.co.kr/learn/courses/30/lessons/140108
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <string>
#include <vector>
using namespace std;
int solution(string s) {
int answer = 0;
while(true)
{
char c = s[0];
int c1=0;
int c2=0;
int i=0;
for(i=0;i<s.length();i++)
{
if(c==s[i])c1++;
else c2++;
if(c1==c2)break;
}
if(i==s.length())
{
answer++;
break;
}
s= s.substr(i+1);
answer++;
if(s.length()==0)
break;
}
return answer;
}
문자열을 규칙에 따라 나누고 몇개로 나눠지는지 리턴하는 문제이다.
규칙은 다음과 같다.
1. 첫글자를 x라하고 x와 x가 아닌 문자의 수를 센다.
처음으로 이 둘이 같아지는 지점에서 멈추고 그 문자열을 나눈다.
다시 반복한다.
2. 이 때, 수가 같지않지만 셀 문자가 없다면 종료한다. 또는 문자열이 남아있지않아도 종료한다.
반복문으로 통해서 문자열을 보며 수를 센다.
c1 == c2 일 때, 멈추고 그 인덱스부터 substr한다.
이 때, i가 s의 길이랑 같다면 셀 문자가 없다는 뜻으로 종료한다.
또는 s의 길이가 0이어도 종료한다.