GitHubSeob

C++ / 프로그래머스 / 문자열 나누기 본문

Programmers/Level 1

C++ / 프로그래머스 / 문자열 나누기

GitHubSeob 2023. 6. 21.

문제

https://school.programmers.co.kr/learn/courses/30/lessons/140108

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제풀이

start에 첫 글자를 저장한다.

s를 탐색하면서 start와 같다면 X++, 다르다면 notX++을 한다.

만약 X가 0이 아닐 때, X와 notX가 같다면 answer++을 하고, 두 값을 초기화, start도 초기화한다.

반복문이 종료되었을 때, X가 0이 아니라면 남은 문자열이 있는 것이므로 answer++을 한다.

 

 

코드

#include <string>
#include <vector>

using namespace std;

int solution(string s) {
    int answer = 0;
    char start(' ');
    int X(0), notX(0), idx(0);

    for (idx = 0; idx < s.size(); ++idx) {
        if (start == ' ') {
            start = s[idx];
        }
        if (start == s[idx]) {
            X++;
        }
        else {
            notX++;
        }
        if (X != 0 && X == notX) {
            answer++;
            X = 0;
            notX = 0;
            start = ' ';
        }
    }
    if (X != 0) {
        answer++;
    }

    return answer;
}