코딩테스트 스터디
코딩테스트 연습 - 중복된 숫자 개수 (JAVA)
개발짱 지망생
2023. 2. 3. 07:00
프로그래머스 코딩테스트 입문 0단계 문제입니다
https://school.programmers.co.kr/learn/courses/30/lessons/120583
📢 문제 설명
정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요.
⭕ 정답 코드
1. for문
class Solution {
public int solution(int[] array, int n) {
int answer = 0;
//1. for문 기반
for(int item : array)
if(item==n) answer++;
return answer;
}
}
2. stream과 filter
import java.util.*;
class Solution {
public int solution(int[] array, int n) {
return (int)Arrays.stream(array).filter(a -> a == n).count();
}
}
⚠️ 직접 풀어본 처음 풀이
🔗 코드
1. for문
public class Solution {
public int solution(int[] array, int n) {
int answer = 0;
//1. for문 기반
for(int i = 0; i<array.length; i++)
if(array[i]==n) answer++;
return answer;
}
}
🔍 해설
1. 배열 요소만큼 반복을 시키고
2. 요소에 n과 같은 값이 있으면 1씩 증가시킨다
2. stream과 filter
import java.util.*;
public class Solution1 {
public int solution(int[] array, int n) {
int answer = 0;
//2. 필터 사용하기
answer = (int)Arrays.stream(array)
.filter(a -> a == n)
.count();
return answer;
}
}
🔍 해설
1. array 배열의 값으로 stream을 만들고
2. filter()로 n과 같은 값을 필터링 해준다
3. count() 메서드로 필터링된 값의 개수를 세어서 answer에 넣어준다
4. count() 메서드의 반환형이 long이므로 (int) 형변환이 필요하다
✅ 개선할 점
1. for each문의 형식
for(int item : array)
if(item == n) answer++;
2. answer 변수를 없애고 바로 return해주면 더 간단해진다
return (int)Arrays.stream(array).filter(a -> a == n).count();
📒 기억하고 갈 문법
Arrays 클래스의 stream