본문 바로가기

Algorithm/Baekjoon

백준(1152번) 단어의 개수

백준(1152번) 단어의 개수

 

1152번: 단어의 개수

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

www.acmicpc.net

 

문제

영어 대소문자와 띄어쓰기만으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.

 

입력

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

 

출력

첫째 줄에 단어의 개수를 출력한다.

 

입출력 예제

 

설명

  • 문제는 아주 간단하다... 그래서 사람들의 오답률이 높았던 것 같다.   문제에서 명확하게 전달해 주지 않았다고 느껴지기도 한다. 
  • 1. 입력받은 문자열의 앞뒤를 trim()으로 공백제거를 한다. 
  • 2. Stirng클레스의 split(" ") 메소드의 구분자를 공백으로 전달하면 공백을 기준으로 배열을 return 한다. 
  • 3. 여기서 조심할 부분은 입력되는 문자열이 공백 뿐이거나  또는 공백조차 입력되지 않을 수 있다는 것이다. 그렇기 때문에 입력받은 문자열을 trim()으로 공백제거를 하고 String 변수에 값이 비어있는지 확인을 해서 비어 있다면 0을 출력한다.
  • String 변수에 값이 있다면 split(" ") 으로 배열을 return 받아서 배열의 개수를 출력하면 된다.

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
    // 1152 - 단어의 개수
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine().trim();
        if(str.isEmpty()) System.out.println(0);
        else System.out.println(str.split(" ").length);
    }
}
cs

'Algorithm > Baekjoon' 카테고리의 다른 글

백준(5622번) - 다이얼  (0) 2021.07.25
백준(2908번) 상수  (0) 2021.07.25
백준(1157번) - 단어 공부  (0) 2021.07.22
백준(2675번) - 문자열 반복  (0) 2021.07.22
백준(10809) - 알파벳 찾기  (0) 2021.07.19