북극곰의 개발일기

boj 1152 단어의 개수





posted by purplebeen on Wed Jan 23 2019 23:03:35 GMT+0900 (KST) in 알고리즘


예전에 풀던 문제인데, C로 풀다가 자바로 푸니까 뭔가 허무하게 해결되버렸다.

문제

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

입력

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

출력

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

풀이

문제를 해결하기 위해서 자바의 split()메소드를 활용하였다.
split 메소드는 인자값을 기준으로 스트링을 잘라서 배열로 바꿔준다.

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
	// write your code here
        Scanner scanner = new Scanner(System.in);
        String message = scanner.nextLine().trim();

        if(message.isEmpty()) {
            System.out.println(0);
        } else {
            System.out.println(message.split(" ").length);
        }
    }
}

Scanner 객체를 통해 입력받은 문자열을 trim()메소드를 이용해서 양 옆의 공백을 제거시켜준다.
split()메소드의 특성상 비어있는 문자열의 경우 "", 즉 공백 하나를 포함한 배열이 나오기 때문에,
비어있는 문자열인지 확인한 후 split()을 이용해 만들어진 배열의 사이즈를 출력시킨다.