React, JavaScript

[JavaScript] forEach()를 사용하여 key-value 생성하기

택이더 2022. 9. 16. 20:24

백준 알고리즘 문제를 풀며 key-value 생성 방법을 메모하기 위해 작성하였습니다.

 

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

 

18870번: 좌표 압축

수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌

www.acmicpc.net

 

기존에 알던 방식으로 제출하였을 경우 시간초과 문제가 발생하여 이를 해결하기 위해 인덱스를 key - value 값으로

지정하여 시간초과 문제를 해결하였습니다.

const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split('\n');

const [n, x] = input;
let arr = x.split(' ');
let result = [];
let set = [...new Set(tt)].sort((a, b) => a - b);
let answer = '';

for(let i=0; i<n; i++){
   if(set.indexOf(arr[i]) === 0){
      result.push(0);
   }else{
      result.push(set.indexOf(arr[i]));
   }
  answer += result[i] + ' ';
}
console.log(answer);

 

key-value 값을 저장하기 위한 객체를 생성한 후 forEach()를 통한 반복문으로 정렬된 set 배열의 각 요소에 해당되는

value 값을 생성해주었습니다.

const set = [...new Set(arr)].sort((a, b) => a - b); // [ '-10', '-9', '2', '4' ]
let obj = {};

set.forEach((item, index) => obj[item] = index);

실행 결과

 

 

 

이상으로 forEach()를 사용하여 key-value 생성하기위한 방법을 정리해보았습니다.

감사합니다.