오늘은 드디어 새로운 단계를 나갈 차례이다.
문제
https://www.acmicpc.net/step/6
1차원 배열 단계
배열을 활용하여 서로 다른 값의 개수를 찾는 문제
www.acmicpc.net
얼른 얼른 끝내버려야지~~~!!
1차원 배열 첫 번째 이야기~~~~ 바로 가자!
문제 10807번
https://www.acmicpc.net/problem/10807
10807번: 개수 세기
첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거
www.acmicpc.net
1차원 배열에 넣어서 확인해보려고 했는데... 뭔가 아닌 것 같은 기분이 들었다.
그래서 다른 분의 풀이를 참고해봤다. 다른 분들도 이 문제를 처음 풀었을 때 반복문으로 풀었는데 해결이 안돼서 filter()를 사용해서 풀었다고 한다. 여기서 filter()가 뭔지 검색해보니 filter는 배열에 사용하며, 주어진 함수를 만족하는 모든 요소를 모아 새 배열로 반환한다고 한다.
let array = [3,5,11,0,9,'string'];
let result = array.filter((value) => value < 10)
console.log(result);
//output : array [3, 5, 0, 9]
이런 식으로 array 배열에서 10 미만의 값만 추출하기 위해 결과값들을 담아둘 result변수를 만든 후 기존 배열에 .filter()를 붙이고 괄호 안에는 필터조건이 되는 함수를 넣어주면 된다고 한다.
참고로 '=>'는 화살표 함수라고 한다. function 키워드를 사용해서 함수를 만드는 것보다 간단히 함수를 표현할 수 있다.
그래서 풀이를 참고하여 내가 직접 작성해봤다.
const fs = require('fs');
//백준에 제출할 때 써야하는 코드
const readFileSyncAdress = '/dev/stdin';
//테스트
//const readFileSyncAdress = 'input.txt';
const input = fs.readFileSync(readFileSyncAdress).toString().trim().split('\n');
const [N, m, v] = input;
const result = m.split(' ').filter((value) => value==v).length;
console.log(result);
'const [N, m, v] = input' 이런 식으로 작성하면 줄을 기준으로 입력받은 것들이 차례로 담긴다!!(이렇게 좋은 걸 안 쓰고 있었다니..) 그리고 m을 공백을 기준으로 나눠주고 그것 중 v랑 같은 것이 있는지 filter()로 확인한다. 마지막으로 length를 이용하여 v랑 같은 것들의 개수를 알아내면 된다.
뭔가 재밌는 것 같기도...ㅎㅎ
몸 상태가 안 좋아서 오늘은 한 문제만 풀어야겠다...
파이팅~~
[참고] https://velog.io/@haleyjun/JavaScript-filter-%EC%82%AC%EC%9A%A9%EB%B2%95
https://velog.io/@ki_blank/JavaScript-%ED%99%94%EC%82%B4%ED%91%9C-%ED%95%A8%EC%88%98Arrow-function
https://velog.io/@cosmos_337yje/%EB%B0%B1%EC%A4%80-10807%EB%B2%88-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%ED%92%80%EC%9D%B4
'백준 > JavaScript' 카테고리의 다른 글
[JS] 백준 1차원 배열 - 세 번째 이야기 (4) | 2024.01.13 |
---|---|
[JS] 백준 1차원 배열 - 두 번째 이야기 (1) | 2024.01.13 |
[JS] 백준 반복문 - 마지막 이야기 (1) | 2024.01.10 |
[JS] 백준 반복문 - 세 번째 이야기 (1) | 2024.01.09 |
[JS] 백준 반복문 - 두 번째 이야기 (1) | 2024.01.08 |