[단계별로 풀어보기] 1152번 단어의 개수 (문자열)

Jun_Gyu·2023년 4월 3일
0

BackJoon Online Judge

목록 보기
18/18
post-thumbnail

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));

		// 영어 대소문자와 공백으로 이루어진 문자열 입력
		String[] str = br.readLine().split(" ");

		// 단어 갯수를 저장할 변수 선언
		int cnt = 0;

		// 단어의 길이만큼 변수값 증가
		for (int i = 0; i < str.length; i++) {
			cnt++;
		}

		// 첫번째 자리가 띄워쓰기일 시 결과값 -1
		if (str[0].equals(" ")) {
			cnt--;
		}
		
		// 출력
		System.out.println(cnt);
	}
}

처음에는 단순히 위와같이 첫째자리의 문자가 띄워쓰기로 표시가 될 경우 cnt 값을 -1 해주어 결과값을 출력하도록 코드를 구성했으나, 반복해서 오류가 발생하였다.

반례로 문자열 str이 " " 를 입력받게되면 ArrayIndexOutOfBoundsException 오류가 뜨게된다.

또한, 문자열의 첫자리와 끝자리가 공백이라면, cnt의 값을 -1해주어야 한다.

하지만, 아래 방법의 경우에는 간단하고 빠르게 문제를 해결할 수 있다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
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()," ");
		System.out.print(st.countTokens());
	}
}

바로 StringTokenizer를 이용하는것으로, 이전에도 자주 사용했던 클래스이다.

간단하게 입력받았던 모든 문자열 토큰에서 공백을 제거하고 문자열만 갯수를 세어 카운트해주는 방식이다.

굉장히 간단한 방식이다..

profile
시작은 미약하지만, 그 끝은 창대하리라

0개의 댓글