[๋ฐฑ์ค 18870๋ฒ] ์ขํ ์์ถ - ์๋ฐ์คํฌ๋ฆฝํธ(nodejs)
https://www.acmicpc.net/problem/18870
18870๋ฒ: ์ขํ ์์ถ
์์ง์ ์์ N๊ฐ์ ์ขํ X1, X2, ..., XN์ด ์๋ค. ์ด ์ขํ์ ์ขํ ์์ถ์ ์ ์ฉํ๋ ค๊ณ ํ๋ค. Xi๋ฅผ ์ขํ ์์ถํ ๊ฒฐ๊ณผ X'i์ ๊ฐ์ Xi > Xj๋ฅผ ๋ง์กฑํ๋ ์๋ก ๋ค๋ฅธ ์ขํ์ ๊ฐ์์ ๊ฐ์์ผ ํ๋ค. X1, X2, ..., XN์ ์ข
www.acmicpc.net
const fs = require('fs');
let input = fs.readFileSync('dev/stdin').toString().trim().split('\n');
input.shift();
input = input[0].split(' ');
let inputArr = [...input];
inputArr = [...new Set(inputArr)].sort((a, b) => a - b);
const arr = [];
const obj = {};
inputArr.forEach((v, idx) => (obj[v] = idx));
for (let i = 0; i < input.length; i++) {
arr.push(obj[input[i]]);
}
console.log(arr.join(' '));
input์ ์ต๋๊ฐ์ด 1,000,000์ด๋ฏ๋ก ์ ๊ทธ๋๋ ๋๋ฆฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํด์ผ ํ ์ ์๋ค.
์ฐ์ ๊ทธ๋ฅ for๋ฌธ์ผ๋ก ํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค.
์ขํ ์์ถ ๊ฐ์ ์ป๊ธฐ ์ํด Set์ ์ด์ฉํด ์ค๋ณต๋ ๊ฐ์ ์ ๊ฑฐํ๊ณ , ์์ ์์๋๋ก ์ ๋ ฌํ์๋ค.
ex) ['-1', '-1', '3', '5', '5', '7'] => ['-1', '3', '5', '7']
๊ทธ ํ ์๊ฐ์ด๊ณผ ํด๊ฒฐ์ ์ํด ์์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์์ฑํด obj๊ฐ์ผ๋ก ๋ฃ์ด์คฌ๋ค.
// ex) ์์ ๊ฐ [-1, 3, 5, 7]
obj = {
'-1' : 0,
'3' : 1,
'5' : 2,
'7' : 3,
}
๊ทธ ํ input๊ฐ์ ๋๋ฆฌ๋ฉฐ ํด๋นํ๋ ์ธ๋ฑ์ค ๊ฐ์ pushํด์ค ํ console๋ก join์ ์ด์ฉํด ๋์ฐ๋ฉด ํด๊ฒฐํ ์ ์๋ค.