본문 바로가기
Algorithm/Node.js(백준)

[13701번] 중복 제거

by _sweep 2021. 12. 4.

문제 링크 >> https://www.acmicpc.net/problem/13701

 

 

📋 문제

N개의 정수 A1, A2, ..., AN 을 읽고, 이들 중에서 반복되는 수를 제외하고 남은 N'개의 수 B1, B2, ..., BN’ 을 입력된 순서대로 출력하시오. 이때,

  1. 0  Ai < 225 = 33554432, i=1,2,…,N.
  2. 입력의 개수 N은 1 이상 500만 이하이다.

 

👉 입력

첫째 줄에 A1, A2, ..., AN이 주어진다.

 

👈 출력

B1, B2, ..., BN’을 출력한다.

 

💡 사용된 개념

indexOf() 메서드는 지정된 요소를 찾을 수 있는 첫번째 인덱스를 반환하고 존재하지 않으면 -1을 반환한다.

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

 

Array.prototype.indexOf() - JavaScript | MDN

indexOf() 메서드는 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환합니다.

developer.mozilla.org

 

📝 풀이

 

const readline = require('readline'); 
const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); 
let arr = [];
rl.on('line', function (line) {
  arr = line.split(' ');
}) 
.on('close', function () {
  let answer = [];
  for(const num of arr){
    if(answer.indexOf(num) === -1) {
      answer.push(num);
    }
  }
  console.log(answer.map(Number).join(' '))
  process.exit(); 
});

 

입력된 숫자들을 arr이라는 빈 배열에 string 형태로 저장한 후 for of 문을 이용해 arr을 순회한다.

 

indexOf()를 이용해 answer라는 배열에 arr의 요소 중 하나인 num이 없으면 answer에 push한다.

 

문제에서의 출력은 숫자를 출력하는 것이기 때문에 정답이 들어있는 배열인 answer의 요소들을 숫자형으로 바꾼 후 사이에 공백을 넣어 출력한다.

 

 

예제1
예제2

 

아쉽게도 이 문제는 백준 사이트에서 풀었을 때 메모리 초과로 통과할 수는 없었다.

정답은 잘 나오는데 node.js로 이 문제에 도전한 사람들이 다 메모리 초과인 것을 봤을 때는 아쉽긴 하지만 제출은 못할 것같다.

대신 정답 비교한 사진으로 만족!

 

 

 

+) 백준에서는 자바스크립트가 없고 node.js만 있기 때문에 입력 처리를 하는 게 좀 까다롭다.

좀 더 써보면 손에 익을 거 같긴 한데 오늘 처음 접해서 그런지 입출력된 데이터를 처리하는 데서 실수를 많이 했다.

입출력 처리에서 헤매지 않도록 많이 써보기 << 새 목표!

 

'Algorithm > Node.js(백준)' 카테고리의 다른 글

[10799번] 쇠막대기  (0) 2021.12.26
[10797번] 10부제  (0) 2021.12.05
[백준 tip] node.js 입출력  (0) 2021.12.05
[2309번] 일곱 난쟁이  (0) 2021.12.04

댓글