문제
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
입력
첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.
출력
첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
| 예제입력 | 예제출력 |
| 1 2 3 4 5 6 7 8 9 10 |
10 각 수를 42로 나눈 나머지는 1, 2, 3, 4, 5, 6, 7, 8, 9, 10이다. |
| 42 84 252 420 840 126 42 84 420 126 |
1 모든 수를 42로 나눈 나머지는 0이다. |
| 39 40 41 42 43 44 82 83 84 85 |
6 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. |
⭕ 풀이
const input=require('fs').readFileSync('/dev/stdin').toString().split('\n');
let num = Number(input);
let arr = [];
for(let i=0;i<10;i++){
arr.push(input[i]%42);
}
const set = new Set(arr);
const answer = [...set];
console.log(answer.length);
배열 arr를 선언한뒤 for문을 통해 42로 나눈 나머지를 arr배열에 넣는식으로 만들었다.
그뒤 set 을 통해 arr배열내의 중복을 제거한 answer배열을 생성하고
answer배열의 길이를 출력했다.
알고리즘문제들이 이런식인가 set이나 등등의 몰랐던 기능을 활용하는것도 있지만
어떤식으로 풀이할것인지에 대한 고민이 더 오래걸리는것같다.
✅ set
const input = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,8];
const set = new Set(input);
const arr1 = [...set];
console.log(arr1)
//output [1,2,3,4,5,8]
const set = new Set(input);
중복값이 있는 배열을 Set객체로 만들어서 중복제거
const arr1 = [...set];
Set객체를 다시 배열로 변환
-출처
'Algorithm > Baekjoon(Node.js)' 카테고리의 다른 글
| [JavaSrcipt] Baekjoon - 8958 : OX퀴즈 (0) | 2021.09.04 |
|---|---|
| [JavaSrcipt] Baekjoon - 1546 : 평균 (0) | 2021.09.04 |
| [JavaSrcipt] Baekjoon - 2577 : 숫자의 개수 (0) | 2021.09.02 |
| [JavaSrcipt] Baekjoon - 2562 : 최댓값 (0) | 2021.09.02 |
| [JavaSrcipt] Baekjoon - 10818 : 최소,최대 (sort,map) (0) | 2021.09.01 |