난이도: 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();
}
}
아래보다 위에 진행한 코드가 더 빠르게 실행된 것을 알 수 있었습니다.
반응형