사실 문제 자체를 이해못해서 문제이해를 구글링 많이했다;;
문제설명
좌표압축: 해당 좌표값보다 작은 좌표값들의 개수로 좌표값을 대체한다는 의미
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
let N = Number(input.shift());
let arr = input[0].split(' ').map(x=>+x);
let uniq = [];
arr.forEach(e => {
if(!uniq.includes(e)) {
uniq.push(e);
}
})
uniq.sort(function (a,b) {
return a - b;
})
console.log(uniq);
let dic = {};
uniq.forEach((e, index) => {
dic[e] = index;
})
console.log(dic);
let answer = '';
arr.forEach(e => {
for (var key in dic) {
if (e === Number(key)) {
answer += dic[key] + ' ';
}
}
})
console.log(answer);
그럴만두....^^
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
let N = Number(input.shift());
let arr = input[0].split(' ').map(x=>+x);
let uniq = [];
arr.forEach(e => {
if(!uniq.includes(e)) {
uniq.push(e);
}
})
uniq.sort(function (a,b) {
return a - b;
})
console.log(uniq);
let answer = '';
for(let i=0; i < arr.length; i++) {
for(let j=0; j < uniq.length; j++) {
if(arr[i] === uniq[j]) {
answer += j + ' ';
}
}
}
console.log(answer);
왜지? 뭐가 문제지?
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
let N = Number(input.shift());
let arr = input[0].split(' ').map(x=>+x);
let set = new Set(arr);
let uniq = [...set].sort((a,b) => a - b);
let dic = {};
uniq.forEach((e, index) => {dic[e] = index;})
console.log(dic);
let answer = '';
for(let i=0; i < arr.length; i++) {
answer += dic[arr[i]] + ' ';
}
console.log(answer);
다른분 코드 좀 참고
문제를 풀이하자면
1. set으로 중복제거 후 sort로 정렬
2. 정렬한 배열의 각 요소를 key로 인덱스 값을 value로 하는 딕셔너리 생성
3. arr배열의 요소를 key값으로 가지고 있는 dic의 value값을 answer에 추가