본문 바로가기
프로그래밍/백준 알고리즘

[백준 / node.js] 3052번: 나머지

by 정빈e 2021. 8. 1.
728x90

출처: 백준

 

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

1

2

3

4

5

6

7

8

9

10

예제 출력 1

10

예제 입력 2

42

84

252

420

840

126

42

84

420

126

예제 출력 2

1

예제 입력 3

39

40

41

42

43

44

82

83

84

85

예제 출력 3

6

내 코드 1

forEach를 사용한 경우

 

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(){
    const check = [];
    let num;

    input.forEach( x => {
        num = x % 42;
        if(check.indexOf(num) === -1) check.push(num);  // check배열에 num이 없을 경우 push
    })

    console.log(check.length);
    process.exit();
})

내 코드 2

for문을 사용한 경우

 

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(){
    const check = [];
    let num;

    for(let i=0; i<input.length; i++){
        num = input[i] % 42;
        if(check.indexOf(num) === -1) check.push(num);  // check배열에 num이 없을 경우 push
    }

    console.log(check.length);
    process.exit();
})

결과

> 1
> 2
> 3
> 4
> 5
> 6
> 7
> 8
> 9
> 10
10
> 42
> 84
> 252
> 420
> 840
> 126
> 42
> 84
> 420
> 126
1
> 39
> 40
> 41
> 42
> 43
> 44
> 82
> 83
> 84
> 85
6

 

처음엔 for문을 사용해봤는데 forEach()메서드로도 풀어봤다. 

이 문제에서 중요한 부분은 서로 다른 값이 몇 개 있느냐를 구하는 부분이라고 생각하는데 indexOf를 사용해서 -1이 나오면 값이 없을 때라는 것을 알아두면 다른 문제를 풀 때 도움이 되겠다는 생각이 든다.

 

 

[Javascript] forEach()

관련사이트: MDN Array.prototype.forEach() - JavaScript | MDN The forEach() method executes a provided function once for each array element. developer.mozilla.org for문을 사용하면서 forEach의 사용법..

jb-dailylife.tistory.com

 

 

 

728x90

댓글