Algorithm_javascript/4. 1차원 배열

백준 10807번 개수 세기, fliter()함수 정리 (javascript, node.js)

luminouswy 2023. 5. 15. 17:05
반응형

백준 10807번 개수 세기, fliter()함수 정리 (javascript, node.js)

  • 처음 이 문제를 풀었을 때 반복문으로 풀었는데 해결이 안돼서 filter()를 사용해서 풀었다.
  • 이후 블로그 글 올리기 위하여 다시 보니 문제는 반복문이 아닌 반복문안에 i < t를 i < 11이라고 상수로 표현하여서 틀렸다고 나온 거였음
  • 결국 컴퓨터는 잘못 없다 내가 잘못한 거지.
  • filter() 함수는 중요해서 정리 한번 하고 지나감

filter()

  • filter() 메서드는 말 그대로 걸러주는 역할을 한다.
  • 아래 예제로 간단하게 정리하고 감
// filter()을 사용하여 배열에서 10보다 작은 수를 걸러주는 예시 코드

const array = [3, 5, 11, 0, 9, "string"];

// #1 화살표 함수 사용
let result = array.filter((value) => value < 10);

console.log(result); // [3, 5, 0, 9]

// #2 화살표 함수 사용 안함
function lessThanTen(value) {
  return value < 10;
}
let reult = array.filter(lessThanTen);

console.log(result); // [3, 5, 0, 9]

문제

  • 총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오.

입력

  • 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어 있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거나 같으며, 100보다 작거나 같다.

출력

  • 첫째 줄에 입력으로 주어진 N개의 정수 중에 v가 몇 개인지 출력한다.

예제입력 1

11
1 4 1 2 4 2 4 2 3 4 4
2

예제출력 1

3

예제입력 2

11
1 4 1 2 4 2 4 2 3 4 4
5

예제출력 2

0


문제풀이

  • 두 번째 줄의 정수에서 세 번째 줄 가 몇 개 있는지 출력하는 프로그램 작성
  • 반복문으로 v랑 같은 수가 몇개 있는지 확인하면 됨
  • filter()를 사용하면 코드가 많이 줄어들지만 생각보다 좀 어려움
//10807번
//개수 세기

// 처음 이 문제를 풀었을때 반복문으로 풀었는데 해결이 안되서 filter()를 사용해서 풀었다.
// 그리고 블로그 글올리기 위하여 다시 보니 문제는 반복문이 아닌
// 반복문안에 i < t 를 i < 11이라고 상수로 표현하여서 틀렸다고 나온 거였음
// 결국 컴퓨터는 잘못 없다 내가 잘못한거지.

// 필터 함수 사용법

// const array = [3, 5, 11, 0, 9, 'string'];
// #1 solution
// let result =array.filter((value) => value < 10);
// #2 solution
// function lessThanTen(value){
//     return value < 10
// }
// let reult = array.filter(lessThanTen)

const fs = require("fs");
const file = process.platform === "linux" ? "dev/stdin" : "./text.txt";
const input = fs.readFileSync(file).toString().trim().split("\n");

const t = input[0];
const arr = input[1].split(" ");
const v = input[2];

let result = 0;
for (i = 0; i < t; i++) {
  if (arr[i] === v) {
    result++;
  }
}
console.log(result);

// filter 함수를 이용하였을때 코드
// arr안의 요소중 v와 같은 것을 추출하여 그 길이를 cnt변수에 담아서 출력

// const cnt = arr.filter((ele) => ele == v).length;

// console.log(cnt);