Antilog의 개발로 쓰다
article thumbnail
반응형

문제 링크

 

1152번: 단어의 개수

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

www.acmicpc.net


시간제한 메모리제한
2초 128MB

문제

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

입력

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

출력

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


예제 입력 1

The Curious Case of Benjamin Button

예제 출력 1 

6

 

풀이

처음에 아주 간단하게 split을 사용하여 공백으로 나누어 String배열에 넣어 해결하려 하였으나, 이 경우 단어가 0개여도 1이라 출력되어 틀렸다.

이유를 추론해보면 sc.nextLine()은 개행문자도 포함하여 받는데 아마 개행문자가 나와 카운트 된게 아닐까 추측한다.

후에 다른 방법인 StringTokenizer를 이용하여 StringTokenizer에 countTokens를 사용하여 공백으로 나누어 개수를 출력하는 방식으로 문제를 해결하였다.

소스코드
import java.util.Scanner;
import java.util.StringTokenizer;

public class Baek1152 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String textLine = sc.nextLine();
        sc.close();

        StringTokenizer st = new StringTokenizer(textLine, " ");
        System.out.println(st.countTokens());
    }
}
반응형
profile

Antilog의 개발로 쓰다

@Parker_J_S

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...