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