출처
백준 온라인 저지
문제
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한 후 출력한다.
풀이
10개의 줄에 수가 존재합니다. 이 수를 각각 나머지(%)를 사용하여 42를 나눈 나머지를 구해줍니다.
이 값을 userNum이란 배열을 하나 생성해주고 indexOf 메서드를 사용하여 배열안에 값이 있는지 확인하고 없을 시 해당 배열에 나머지를 넣어줍니다. (해당 풀이에 includes와 같은 중복 체크하기 용이한 메서드로 대체해도 됩니다.)
그 후 모아둔 배열의 길이를 반환해줍니다.
코드
let input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
const userNum = [];
input.forEach(x => {
const num = x % 42;
if (userNum.indexOf(num) === -1) {
userNum.push(num);
}
});
console.log(userNum.length);
다른 풀이
Set 객체를 이용하여 배열의 중복값을 쉽게 제거할 수 있습니다.
map 메서드를 이용해 입력값을 나머지 값으로 바꿔주고, 중복 값을 제거한 후 길이를 반환해줍니다.
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
const count = new Set(input.map(x => x % 42)).size;
console.log(count);