[boj node.js] 백준 3052번 나머지 javascript

V·2021년 7월 8일
0
post-thumbnail

출처: https://www.acmicpc.net/problem/3052

문제

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.

수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

입력
첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.

출력
첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.

예제 입력 1
1
2
3
4
5
6
7
8
9
10
예제 출력 1
10
각 수를 42로 나눈 나머지는 1, 2, 3, 4, 5, 6, 7, 8, 9, 10이다.

예제 입력 2
42
84
252
420
840
126
42
84
420
126
예제 출력 2
1
모든 수를 42로 나눈 나머지는 0이다.

예제 입력 3
39
40
41
42
43
44
82
83
84
85
예제 출력 3
6
각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.

풀이

전략

입력받은 수가 담긴 배열에서 중복된 값을 제거한 컬렉션을 만들어서 요소의 갯수를 출력하자.


const fs = require('fs');
const input = fs.readFileSync('dev/stdin').toString().trim().split('\n').map(val=>+val);
const arr = input.map((el)=> el%42 );
const set = new Set(arr);
const uniqueArr = [...set];
console.log(uniqueArr.length);

배열에서 중복 제거하기

여러가지 방법이 있다.

  • Set 객체를 활용해 중복된 요소가 없는 컬렉션을 생성한 후 배열로 만드는 방법
  • filter() 와 indexOf() 활용하여 콜백에서 받아온 요소를 indexOf()에 전달 해 주어 검사중인 요소의 index와 배열에서 해당 요소의 첫 index를 비교하여 새로운 배열을 만드는 방법
  • foreEach() 와 includes()를 활용하여 기존 배열에 없는 요소만 새로운 배열에 추가해서 중복 없는 배열을 만드는 방법.

이 중 첫번째 방법을 사용하였다.

Set 객체

Set 객체를 활용하면 간단하게 중복 없는 컬렉션을 생성해 줄 수 있다.

profile
블로그 이전중 https://sungbeen.com

0개의 댓글