JAVA/코딩테스트 문제풀이
[프로그래머스 - JAVA] Lv.0 중복된 숫자 개수
kKkKkKWJ
2025. 3. 12. 20:22
문제
프로그래머스
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의 장단점을 따져보고,
상황에 맞는 문법을 사용해보자.