티스토리 뷰

728x90
반응형

문제

 

영어 대소문자와 공백으로 이루어진 문자열이 주어진다.

이 문자열에는 몇 개의 단어가 있을까?

이를 구하는 프로그램을 작성하시오. 

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

 

입력

 

첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다.

이 문자열의 길이는 1,000,000을 넘지 않는다.

단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다.

또한 문자열은 공백으로 시작하거나 끝날 수 있다.

 

출력

 

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

 

풀이

 

조건문을 사용해서 약간 어거지로 스트림을 사용해봤다.

 

가장 먼저 trim()을 사용해 문자열 앞 뒤의 공백을 제거하고

 

split()을 이용해 빈칸을 기준으로 문자열을 나눈 배열을 얻은 뒤

 

스트림으로 단어의 개수를 세었다.

import java.util.Arrays;
import java.util.Scanner;

public class Prob1152Stream {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String str = sc.nextLine().trim(); // 앞 뒤 공백 제거

        if(str.length() == 0) System.out.println(0);

        else {
            long result = Arrays.stream(str.split(" ")) // 공백을 기준으로 단어 나누기
                    .count(); // 단어 개수 세기
            System.out.println(result);
        }
    }
}
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
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
글 보관함