티스토리 뷰

알고리즘

[알고리즘] 단어의 개수(백준1152번)

데브캣_DevCat 2022. 10. 12. 11:22

keyword : 문자열
difficulty : 하
completion : ✅
notice :


69. 단어의 개수

📝 문제

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

입력

첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다.

출력

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

예제 입력 1

The Curious Case of Benjamin Button

예제 출력 1

6


🔍 정답

import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.util.StringTokenizer;  


public class Main {  
    public static void main(String[] args) throws IOException {  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
        StringTokenizer st = new StringTokenizer(br.readLine());  

        int count = 0;  
        while(st.hasMoreTokens()) {  
            st.nextToken();  
            count++;  
        }  
        System.out.println(count);  
    }  
}
  • 기본 로직은 StringTokenizer가 입력받은 것을 공백 기준으로 나누기 때문에 st.nextToken()이 발동될 때마다 count를 세어주면 되는 것이다.
  • 처음에는 while(true) 로 해서 nextToken이 없으면 false가 되므로 while문이 종료되고 값이 구해질 줄 알았는데 "NoSuchElementException" 이 발생해서 찾아본 결과
  • hasMoreTokens() 으로 내가 생각한 로직을 구현할 수 있었다.
    • nextToken은 다음 토큰 받아오기
    • hasMoreToken은 다음 토큰 존재여부 확인하기
    • countTokens는 토큰 개수 세기
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함