| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 1541 node.js
- 노마드스터디
- 개인프로젝트
- 14655 nodejs
- 1026 node.js
- 백준21313
- 백준1026
- 1931 node.js
- 21313 nodejs
- IT5분잡학사전
- 자바스크립트 딥다이브
- const
- 2217 node.js
- 11399 node.js
- 1789 node.js
- 백준1789
- 노마드북클럽
- 11047 node.js
- 백준25176
- 자바스크립트 일급객체
- 노개북
- CSS flex
- 코딩
- 자바스크립트 함수
- 모던자바스크립트
- flex box
- 모던자바스크립트 딥다이브
- Javascript
- 모던자바스크립트DeepDive
- 개발자
- Today
- Total
캐또's coding
3052 - 나머지 - node.js 본문
문제
두 자연수 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개가 있다.
알고리즘 분류
나머지를 구해서 다시 그 나머지의 갯수를 구하는 방법. 문제를 읽었을 때 어떻게 풀어야 좋을지 몰라서 조금 막막한 느낌이 들었다. 검색 결과 중 하나로 우선 42로 나눈 나머지로 array를 만든 뒤 중복값을 제거한 array.length를 구하라는 이야기가 있었다.
const input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n").map(Number);
const arr = input.map((e) => e % 42);
const set = new Set(arr);
const newArr = [...set];
console.log(newArr.length);
우선 수를 받아오는 것은 똑같이 진행한 뒤 input array의 각 수에 대해 42로 나눈 나머지를, 그리고 Set이라는 함수는 중복값을 제거해주는 함수인데 이를 활용해서 arr를, 그리고 값만 출력시키는 ...을 사용해서 array로, 그렇게 최종적으로 newArr.length를 출력하면 중복값이 제거된 42로 나눈 나머지들이 나오고 그 숫자가 곧 서로 다른 나머지 수의 갯수가 된다.
'기초 공부 > 백준 문제 풀이' 카테고리의 다른 글
| 8958 - OX퀴즈 - node.js (0) | 2022.08.18 |
|---|---|
| 1546 - 평균 - node.js (40번째) (0) | 2022.08.17 |
| 2562 - 최댓값 - node.js (0) | 2022.08.17 |
| 10818 - 최소, 최대 - node.js (0) | 2022.08.17 |
| 1110 - 더하기 사이클 - node.js (0) | 2022.08.17 |