백준/단계별

백준 1152 C#) 단어의 개수

alpacadabra 2022. 4. 22. 02:12

이 문제를 푸는 아이디어는 간단하다. 커서가 문자열을 훑는다고 할 때, 공백에서 문자로 넘어가는 그 타이밍에만 셈하면 된다.

 

int cnt = 0;
bool flag = true;

string s = Console.ReadLine();

foreach (char c in s)
{
    //공백에 이어 문자가 나왔는가
    if (flag && c != ' ') cnt++;
    
    //공백이 나왔는가
    flag = (c == ' ');
}

Console.Write(cnt);

 

정답률이 상당히 낮은 문제지만 코드는 전혀 복잡하지 않다.

오히려 그 타이밍만 잘 캐치할 수 있다면 공백이 한 개가 아닌 열 개가 연속으로 나와도 문제를 해결할 수 있다.

 

포인트라고 할 부분은 없지만 굳이 꼽자면 flag의 초기값을 true로 설정하는 것 정도가 되겠다.