문제
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
답안1 - for문 사용
class Solution {
public int solution(int[] array, int n) {
int answer = 0;
for(int i:array){
if(i==n) answer++;
}
return answer;
}
}
문제는 정말 간단해서 for문으로 코딩 1일차 어린이도 쉽게 풀 수 있는 문제이다.
하지만 이 문제를 stream으로도 풀 수 있고, 익숙하지 않았기 때문에 stream API를 사용하여 풀어보았다.
답안2 - stream API 사용
import java.util.Arrays;
class Solution {
public int solution(int[] array, int n) {
return (int)Arrays.stream(array)
.filter(i->i==n)
.count();
}
}
메모
사실상, for문과 stream API의 성능을 비교하면 아주 미세한 차이지만 for문이 더 좋다고 한다.이는 stream이 더 늦게 나와 컴파일러가 최적화를 제대로 수행하지 않아서 이다.
그럼에도 불구하고 stream을 사용하는 이유는 (1)가독성과(2)stream에서 제공하는 함수로 간단하게 문제를 해결할 수 있기 때문이다.
for문과 stream API의 장단점을 따져보고,
상황에 맞는 문법을 사용해보자.
'JAVA > 코딩테스트 문제풀이' 카테고리의 다른 글
[프로그래머스 - Java] Lv.0 두 수의 합 (0) | 2025.03.13 |
---|---|
[프로그래머스 - JAVA] Lv.0 머쓱이보다 키 큰 사람 (0) | 2025.03.12 |
[Java] 18115번. 카드 놓기 (0) | 2024.06.19 |
[Java] 11003번. 최솟값 찾기 (2) | 2024.06.19 |
[Java] 5430번. AC (2) | 2024.06.19 |