본문 바로가기
Algorithm/Java

Baekjoon Online Judge _ 01152 _ 단어의 개수

by autumnly 2017. 1. 11.

[ Baekjoon Online Judge _ 01152 _ 단어의 개수 ]


문제

영어 대소문자와 띄어쓰기만으로 이루어진 문장이 주어진다. 이 문장에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 단어는 띄어쓰기 하나로 구분된다고 생각한다.

입력

첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문장이 주어진다. 이 문장의 길이는 1,000,000을 넘지 않는다.

출력

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

예제 입력

The Curious Case of Benjamin Button

예제 출력

6



풀이

Scanner의 next() 메소드를 이용해 단어 단위로 입력을 받으며 count 변수를 증가해주었다.

그리고 hasNext() 메소드로 문자열의 끝을 판단하였다.

그런데 이클립스에서 실행하면 콘솔창에 출력이 제대로 되지 않는 문제가 있었다.

백준 알고리즘에 제출했을 때는 분명 정답이라고 떴는데말이다ㅜㅜ


input.txt 파일을 따로 만들고 cmd창을 통해 실행해줬더니 정상적으로 값이 나오는 것으로 봐서

파일을 통해 입력하면 올바른 출력이 나오는 것 같다.

콘솔창에서 왜 출력이 되지 않는지는 아직 모르겠다ㅜㅜ


*cmd창에서 이렇게 컴파일할 수 있당



코드



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int count = 0;
        
        while(sc.hasNext()){
            sc.next();
            count++;
        }
        
        System.out.println(count);
    }
 
}
 
cs



*참고로 아래는 StringTokenizer 클래스를 이용한 방법이다


1
2
3
4
5
6
7
8
9
10
11
import java.util.Scanner;
 
class Main
{
    public static void main(String[] args) 
    {
        StringTokenizer str = new StringTokenizer((new Scanner(System.in)).nextLine());
        System.out.print(str.countTokens());
    }
}
 
cs