[JS] 백준. 3052. 나머지

n-u·2022년 7월 1일
0

Algorithm

목록 보기
22/33
post-thumbnail

백준. 3052. 나머지

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

제출한 풀이

풀이 과정

  1. 24를 나눈 나머지를 구한다.
  2. 서로 다른 값 비교해 배열을 만든다.
  3. 그 배열의 길이를 구해 개수를 구한다.
const fs = require('fs');
const file = process.platform === "linux" ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(file).toString().trim().split('\n');
let result =[];

input.map((i)=> {
  //1번
   let rem = i % 42;
  //2번
    if(result.indexOf(rem) === -1){
        result.push(rem);
    }
});
//3번
console.log(result.length);
  • 2번 과정
    • result의 배열은 빈 배열을 시작으로 값의 나머지 값들을 하나씩 같게 되는데 업데이트 되는 과정에서 이미 있는 값이 있을 경우에는 push되지 않음으로 똑같은 값은 배열에 들어갈 수 없다.
    • indexOf()에는 들어온 인자가 배열에 없다면 -1을 반환한다. 그것을 이용해 result배열에 일치하는 요소가 있다면 그 요소의 index값을 반환하여 push되지 않는다.
    • 따라서, result에는 중복되지 않은 나머지의 값들을 가질 수 있다.
  • 입력 받는 데이터에 숫자 뒤 공백 하나가 있어서 틀렸는데 trim()메서드를 이용해서 불필요한 공백을 없애고 하니 답을 맞출 수 있었다.

다른 풀이 (new Set()사용)

let newArr = input.map((i)=> i % 24);
let count = new Set(newArr);
console.log(count.size);

풀면서 알게 된 것

  • indexOf를 통해 중복된 요소를 찾는 방법
  • set 객체
  • trim()

Reference

https://gurtn.tistory.com/44

profile
기록하며 발전하는 삶

0개의 댓글