[JS]백준_3052번: 나머지

백준 온라인 저지 3052번

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

readline 모듈


💡 문제

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

💡 풀이

.forEach() 메소드로 입력받은 배열 내부 요소를 순환하며, 42로 나눈 나머지 배열을 만든다.
.set 메소드를 통해 중복 값 제거를 한 후, 배열의 길이를 출력한다.

💡 코드

const readline = require("readline");
const rl = readline.createInterface({
    input : process.stdin,
    output : process.stdout
});

let input = [];

rl.on("line", function(line){
    input.push(Number(line));
}).on("close", function(){
    let remainder = []
    input.forEach((el) => {
        remainder.push(el % 42)
    })

    remainder = Array.from(new Set(remainder))
    console.log(remainder.length)
    process.exit();
})

💡 학습

.forEach()

Array 내잘 객체의 forEach 메소드는 배열 내부 요소를 순환하며, 각 요소에 대해 callback 함수를 실행합니다.
배열.forEach(callback 함수)

const arr = [
  {id: 0, name: '옥돌'},
  {id: 0, name: '돌돌'},
  {id: 0, name: '은빈'}
]

arr.forEach((el) => {
  console.log(el.name)
})
//옥돌
//돌돌
//은빈

Array.from()

Array.from() 메서드는 유사 배열 객체(array-like object)나 반복 가능한 객체(iterable object)를 얕게 복사해 새로운Array 객체를 만듭니다.

console.log(Array.from('foo'));
// expected output: Array ["f", "o", "o"]

console.log(Array.from([1, 2, 3], x => x + x));
// expected output: Array [2, 4, 6]

set

  • Set 객체는 자료형에 관계 없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있습니다.
  • Set은 ES6에서 등장한 새로운 data object이다. set은 유니크한 값만 저장할 수 있도록 하기 때문에 array에 넣게 되면, 중복되는 값이 사라진다. 상당히 유용하기 때문에 반드시 기억해둘 필요가 있다. (이 메소드 하나로 코드를 몇 줄이나 줄일 수 있다.)
const array = ['0', 1, 2, '0', '0', 3]
Array.from(new Set(array));
// ['0', 1, 2, 3]

💡 참고

좋은 웹페이지 즐겨찾기