✏️기록하는 즐거움
article thumbnail

Link

 

3052번: 나머지

각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.

www.acmicpc.net

문제

두 자연수 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

 

제출

const input = (
  process.platform === "linux"
    ? require("fs").readFileSync("/dev/stdin").toString()
    : `1
    2
    3
    4
    5
    6
    7
    8
    9
    10`
)
  .trim()
  .split("\n");

const count = new Set(input.map((num) => num % 42)).size;
console.log(count);

풀이과정

1. map() 메서드로 입력값인 input 배열을 42로 나눈 나머지 값을 갖는 배열을 반환
2. Set을 사용하여 중복을 제거한 객체의 크기를 콘솔에 출력한다.

개념

Set

  • Set은 중복되지 않은 유일한 값으로 이루어진 콜렉션 객체이다.
  • new 연산자로 객체를 생성할 수 있다.
const mySet = new Set();
  • size 프로퍼티를 사용하면 Set 객체의 크기를 알 수 있다.
const mySet = new Set([1, 3]);
console.log(mySet.size); // 2

 

 

# 참고 링크

 


Comment

백준에서 가끔 입력값에 공백이 들어가서 split() 뿐만아니라 trim()도 해주어야 하는 문제가 있는데

이번 문제가 그런 문제였다 호호,,

초반 문제중에서도 이런 문제가 있었는데 trim()이 필요하지 않은데도 굳이 쓰는게 맞는걸까? 생각해서 넣지 않고 있었는데 넣는 습관을 넣어야할지 고민해봐야겠다.

'Algorithm > Baekjoon' 카테고리의 다른 글

[백준] 8958: OX퀴즈  (0) 2022.06.17
[백준] 1546: 평균  (0) 2022.06.17
[백준] 2577: 숫자의 개수(javascript)  (0) 2022.06.14
[백준] 2562: 최댓값(javascript)  (0) 2022.06.14
[백준] 10818: 최소, 최대(javascript)  (0) 2022.06.14
profile

✏️기록하는 즐거움

@nor_coding

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!