백준문제풀이 5단계 문자열8 1152번 단어의 개수 (C#)

2024. 5. 23. 20:00백준 문제풀이/5단계 문자열

 

공백이 포함된 문자열을 받는다.

이 문자열안에는 몇개의 단어가 있는지를 구하는 문제.

 

중요한건 공백이다.

공백으로 시작할수도 끝날수도 있다.

 

공백으로 단어를 나누면 쉽게 끝날줄 알았다.

하지만 공백으로 시작하는경우와 끝나는 경우때문에 계속해서 틀렸다.

 

using System;
class BackJoon
{
    static void Main(string[] args)
    {
        string[] input = Console.ReadLine().Split();
        string[] newInput = Array.FindAll(input, str => str != "");
        Console.WriteLine(newInput.Length);
    }
}

 

처음으로 찾은 방법은 Array.FindAll을 이용해서 공백을 모두 지운 새로운 배열을 만드는것.

그다음 새로운 배열의 길이를 출력하면 해결이다.

 

하지만 이 방법은 메모리가 너무크고 시간이 너무 오래걸렸다.

난 해결만 하면 다음문제로 넘어가기는 하지만 그래도 등수가 50%안에는 들려고 노력한다.

 

이 방법은 상위 80%가 넘어버렸다.

그래서 다른 방법을 찾아봤다.

 

using System;
class BackJoon
{
    static void Main(string[] args)
    {
        string input = Console.ReadLine().Trim();
        string[] input2 = input.Split();
        if(input.Length == 0)
            Console.WriteLine(0);
        else
            Console.WriteLine(input2.Length);
    }
}

 

두번째 방법은 Trim()을 이용한것.

Trim은 문자열의 선행 공백과 후행 공백을 지워준다.

이번문제에 아주 유용하다.

 

공백만 입력됬을 때를 생각하며 길이가 0일때는 그냥 0을 출력해주도록한다.

끝.