문제 링크 >> https://www.acmicpc.net/problem/13701
📋 문제
N개의 정수 A1, A2, ..., AN 을 읽고, 이들 중에서 반복되는 수를 제외하고 남은 N'개의 수 B1, B2, ..., BN’ 을 입력된 순서대로 출력하시오. 이때,
- 0 ≤ Ai < 225 = 33554432, i=1,2,…,N.
- 입력의 개수 N은 1 이상 500만 이하이다.
👉 입력
첫째 줄에 A1, A2, ..., AN이 주어진다.
👈 출력
B1, B2, ..., BN’을 출력한다.
💡 사용된 개념
indexOf() 메서드는 지정된 요소를 찾을 수 있는 첫번째 인덱스를 반환하고 존재하지 않으면 -1을 반환한다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
📝 풀이
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의 요소들을 숫자형으로 바꾼 후 사이에 공백을 넣어 출력한다.
아쉽게도 이 문제는 백준 사이트에서 풀었을 때 메모리 초과로 통과할 수는 없었다.
정답은 잘 나오는데 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 |
댓글