BOJ 1152

2020-01-27

위 문제는 백준 사이트의 알고리즘 1152 문제에 관한 설명입니다.


문제

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

단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.

입력

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

단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다.


import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String S = sc.nextLine();
		int check = 1;
		for (int i = 0; i < S.length(); i++) {
			if (S.charAt(i) == ' ')
				check++;
		}
		if (S.charAt(0) == ' ')
			check--;
		if (S.charAt(S.length() - 1) == ' ')
			check--;
		System.out.println(check);
	}
}

제가 푼 소스코드입니다.

’ ‘가 단어 하나를 구분시키고 공백이 연속시키는 경우는 없기 때문에

String으로 받아들인 S에 ‘ ‘가 몇개나 포함되어있는가 Count하고,

맨 앞의 공백, 맨뒤의 공백의 갯수를 제외시키면 된다 생각했습니다.


import java.util.StringTokenizer;
import java.util.Scanner;

class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		StringTokenizer st = new StringTokenizer(str, " ");
		int count = st.countTokens();
		System.out.println(count);
	}
}
 

몰랑이말랑이님 티스토리

StringTokenizer를 활용하셔서 푸셨습니다.

StringTokenizer는 문자열을 토큰이라는 용어로 부르는데 사용방법은 메소드를 이용하여 전체 토큰의 수는 몇개 있는지,

사용할 토큰이 있는지를 판단하여 토큰을 읽어옵니다.

단어의 갯수