본문 바로가기
C#/C# : Baekjoon

[백준] C# : 단어의 개수(1152번)

by TODAYCODE 2021. 11. 8.
반응형

백준 단계별로 풀어보기 7단계 6번문제

 

1152번: 단어의 개수

첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열

www.acmicpc.net

문제의 핵심

단어의 개수를 세는 가장 간단한 방법을 떠올리기

 


 

이 문제는 정답률이 29%밖에 안되는 문제인데

개인적으로는 이게 많이 틀릴정도로 어려운 문제는 아니라고 생각했어서 좀 의외였다.

 

단어의 개수를 세는 방법은 여러가지가 있는데

이 문제의 특성상 그냥 띄어쓰기가 몇개인지 센다음에 +1을 해서 출력하는게 가장 쉬운 방법이다.

 

그리고 문제에서는 문장 앞이나 뒤에 공백이 등장할 수 있다고 했으니,

Trim()을 사용해서 앞뒤 공백을 제거하는 노하우가 조금 필요하다.

 

이러면 이제 for문 돌려서 띄어쓰기에 해당하는 공백이 몇개 있는지 확인한 다음에

거기에 + 1을 해주면 문장에 등장한 총 단어의 숫자를 파악할 수 있다.

 

단어를 세려고하지말고 단어가 아닌 것을 세서 단어의 개수를 유추하는 방식으로 접근해야했다.

 

 

 

정답 코드

using System;

class 단어의개수
{
    static void Main()
    {
    // 정답 출력을 위한 변수 생성.
        int answer = 0;
        
        // 입력된 문자의 앞뒤에 공백이 있을 수 있으니 공백을 제거한다.
        string s = Console.ReadLine().Trim();
        
        // 입력된 문자열을 하나씩 확인한다.
        for (int i = 0; i < s.Length; i++)
        {
        // 만약 공백이 존재한다면 => 띄어쓰기라는 것 => 단어와 단어의 구분 발생
            if (s[i] == ' ')
            {
                answer++;
            }
        }
        // 만약 입력된 문자가 없다면 0을 출력
        if (s.Length == 0)
            Console.WriteLine(0);
        else
        // 입력된 문자가 존재했다면, answer에 +1을 더해준다.
        // '띄어쓰기 개수 + 1' = '단어의 개수'이므로.
            Console.WriteLine(answer+1);
    }
}

 

반응형

'C# > C# : Baekjoon' 카테고리의 다른 글

[백준] C# : 다이얼(5622번)  (0) 2021.11.10
[백준] C# : 상수(2908번)  (0) 2021.11.09
[백준] C# : 단어 공부(1157번)  (0) 2021.11.07
[백준] C# : 문자열 반복(2675번)  (0) 2021.11.06
[백준] C# : 알파벳 찾기 (10809번)  (0) 2021.08.05

댓글