백준 알고리즘/Lang-node.js

[백준/node.js] 10867 중복 빼고 정렬하기

Jongung 2023. 1. 3. 23:51

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

 

10867번: 중복 빼고 정렬하기

첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다.

www.acmicpc.net

  • 사용언어 : node.js
  • 알고리즘 : 정렬
  • Solved.ac Tier : Silver V

 

 

 

node.js 코드

1. 문제 정리

2줄의 입력을 받는다. 첫 번째 줄은 정수 N, 두 번째 줄은 N개의 정수들이 주어진다.
말 그대로 중복 빼고 정렬하면 된다. 값이 1 2 3 2 3 1로 들어온다면 중복된 수를 빼고 오름차순으로, 1 2 3 출력해주면 되는 문제이다. 

이 문제는 정렬이 중요한 것이 아니라, 개수를 10만개까지 주는데 모든 값들을 배열에 넣고, 중복된 값이 있는지 전부 탐색하는 것은 시간 초과에 걸릴 것 같아. Set을 사용하여 탐색해주었다. 따라서 탐색하는 데 걸리는 시간을 O(1)로 만들어 주었다. 

2. 완성 코드

const filePath = process.platform === 'linux' ? '/dev/stdin' : 'ans.txt';
const [, inputs] = require('fs').readFileSync(filePath).toString().trim().split("\n");
let ans = new Set();

inputs.split(" ").map((value)=>{
    ans.has(value) ? ()=>{} : ans.add(value); 
})

console.log(Array.from(ans).sort((a, b)=> a-b).join(" "));