출처
백준 온라인 저지
3052번: 나머지
39, 40, 41, 42, 43, 44, 82, 83, 84, 85를 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로 나눈 나머지를 구한 후 출력한다.
풀이
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);