본문 바로가기
Baekjoon 자바 코드/문자열

[백준] 1152번 단어의 개수 풀이 코드 (Java 자바)

by 망댕이 2024. 4. 15.
반응형

 

1152번 문제는 처음에 문자열 문제에서 charAt()을 이용하여 공백의 개수에 따라 문자를 나누는 방법을 선택하였다.

하지만 변수도 많고 if문을 이용하여 예외 상황을 나누는데 코드가 정말 길어지고 복잡해졌다.

그래서 StringTokenizer 클래스를 이용하여 문자를 분리해보고자 했다.

new StringTokenizer(문자열)을 이용하여 공백을 기준으로 분리해보았다.

StringTokenizer로 문자를 분리할 때 빈 문자열은 토큰으로 인식하지 않기 때문에 입력값 앞 뒤 공백이 있어도 토큰으로 인식하지 않아 카운트되지 않는다.

 

 

또한 sc.next()이 아닌 nextLine()을 이용하여 입력을 받아야한다.

next()은 공백을 기준으로 한 문장이나 한 단어로 입력받기 때문이다.

예를 들어 "hello student"를 "hello"로만 입력받는다.

import java.util.*;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        
        StringTokenizer st = new StringTokenizer(str);
        System.out.print(st.countTokens()); // 총 토큰 개수 반환
        
    }
}

 

위와 같이 구현 방식은 똑같은데 속도를 빠르게 하기 위해서 BufferedReader를 이용할 수도 있다.

import java.util.*;
import java.io.*;

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

 

 

반응형