반응형

 

 

문제)

문자열 s 가 주어지면 문자열의 세그먼트 수를 반환합니다 .
세그먼트는 공백이 아닌 문자 의 연속된 시퀀스로 정의됩니다 .

 

문제 난이도 : 하

 

소요시간 및 풀이)

문자열의 첫 단어가 시작하는 부분에서 시작하기 위해 bool first 변수를 만들어 주었다.

그리고 첫 단어부터 순회를 시작해서 현재 문자가 공백일 때, 이전 문자가 공백이 아니면 answer 카운트를 1 증가시켰다.

그리고 문자열의 마지막이 공백이 아니라 문자로 끝나면 1을 더해주도록해서 문제를 풀었다.

 

오랜만에 문제를 푸니 쉬운 문제도 빨리 못풀고 좀 헤매는거 같다.

 

소요 시간 : 18분

 

정답 코드

class Solution
{
public:
    int countSegments(string s) 
    {
        int answer = 0;
        bool first = false;

        if (s.empty())
            return 0;

        for (int i = 0; i < s.size(); i++)
        {
            if (isspace(s[i]) == 0)
                first = true;

            if (first)
            {
                if (isspace(s[i]) != 0)
                {
                    if (isspace(s[i - 1]) == 0)
                        answer++;
                }
            }
        }

        if (isspace(s.back()) == 0)
            answer++;
       
        return answer;
    }
};
반응형