알고리즘/프로그래머스 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이어도 종료한다.