코딩 테스트

(백준/Java) 1152번 : 단어의 개수 (stream().filter() 사용기)

Kua 2021. 6. 14. 14:57

난이도: Bronze 2

프로그래밍 언어: Java

문제명: 단어의 개수

푼일자: 2021년 6월

 

주소: https://www.acmicpc.net/problem/1152

 

문제풀기

문제를 접하고 for 문을 쓰기는 식상한데.. 좋은 방법이 없을까?

하고 찾아보니 filter() 메소드를 사용하는것이 좋아 보였습니다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class question_1152 { // 단어의 개수
    public static void main(String[] args) throws IOException {
        var br = new BufferedReader(new InputStreamReader(System.in));
        var words = Arrays.asList(br.readLine().split(" ")).stream().filter(a -> !a.isBlank());
        System.out.print(words.count());
        br.close();
    }
}

 

이후 Intellij가 알려준 방법대로 Arrays 에서 List 가 아닌 stream 으로 바로 바꿔주도록 리팩토링!

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class question_1152 { // 단어의 개수
    public static void main(String[] args) throws IOException {
        var br = new BufferedReader(new InputStreamReader(System.in));
        var words = Arrays.stream(br.readLine().split(" ")).filter(a -> !a.isBlank());
        System.out.print(words.count());
        br.close();
    }
}

 

 

아래보다 위에 진행한 코드가 더 빠르게  실행된 것을 알 수 있었습니다.

728x90