문제 설명

정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 0 ≤ array의 원소 ≤ 1,000
  • 0 ≤ n ≤ 1,000

입출력 예

arraynresult
[1, 1, 2, 3, 4, 5]12
[0, 2, 3, 4]10

입출력 예 설명

입출력 예 #1

  • [1, 1, 2, 3, 4, 5] 에는 1이 2개 있습니다.

입출력 예 #2

  • [0, 2, 3, 4] 에는 1이 0개 있습니다.

✍ SOLUTION1

const solution = (array, n) => array.filter(x=>x===n).length;

/* 내가 처음 작성한 코드이다. filter를 이용해서 n과 같은 값들을 리턴하도록 만들어준 후 length로
개수를 구해주었다. */

✍ SOLUTION2

const solution = (array, n) => {
	let arr = 0;
	for(i=0; i<array.length; i+=1){
		if(array[i]===n){
			arr++;
		}
	}
	return arr;
}
/* for문을 써서 코드를 만들어보았다. array의 인덱스로 접근하여 n과 같다면 arr에 1을 추가하도록
만들어주었다. 확실히 SOLUTION1에서 작성한 filter메서드를 이용한게 간결하고 가독성도 좋은거같다. */

✍ SOLUTION3

const solution = (array, n) => {
	let arr = 0;
	for(let i of array){
		if(i===n){
			arr++;	
		}
	}
	return arr;
}

/* 이번엔 for of를 사용하여 작성한 코드이다. SOLUTION2의 for문보다 for of를 써서 조금 더 
간결하게 작성해보았다. */

✍ SOLUTION4

const solution = (array, n) => {
	let arr = 0;
	array.map(x=>{
		if(x===n){
			return arr+=1;
		} 
	})
    return arr;
}

/* map을 활용하여 작성한 코드이다. map의 콜백 함수에 n과 같다면 arr에 1씩 증가시키도록 
작성해 주었다. */
const solution = (array, n) => {
	let arr = 0;
	array.map(x=>x===n && arr++)
    return arr;
}

/* 위의 코드에서 if문을 없애고 &&연산자를 통해서 작성해보았다. */

✍ SOLUTION5

const solution = (array, n) => {
	return array.reduce((add, x) => {
        if(x===n){
            add++
        }
        return add;
    },0);
}

/* 이번엔 reduce를 통해서 작성한 코드이다. SOLUTION4의 경우 변수를 하나더 만들어서
조건에 만족하면 1씩 추가해주는 코드를 작성해주었다면 reduce를 통해서 변수를 만들지 않고 
작성할 수 있다. */
const solution = (array, n) => {
	return array.reduce((add, x) => {
        x===n && add++
        return add;
    },0);
}

/* 위의 코드에서 if문을 없애고 &&연산자를 통해서 작성해보았다. */

출처 : 프로그래머스 스쿨 | 코딩테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/120583

0개의 댓글