캐또's coding

3052 - 나머지 - node.js 본문

기초 공부/백준 문제 풀이

3052 - 나머지 - node.js

JS_K_coding 2022. 8. 17. 11:36

문제

두 자연수 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개가 있다.

출처

Contest > Croatian Open Competition in Informatics > COCI 2006/2007 > Contest #1 1번

  • 데이터를 추가한 사람: adfsfsf
  • 문제를 번역한 사람: baekjoon

알고리즘 분류


나머지를 구해서 다시 그 나머지의 갯수를 구하는 방법. 문제를 읽었을 때 어떻게 풀어야 좋을지 몰라서 조금 막막한 느낌이 들었다. 검색 결과 중 하나로 우선 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
Comments