mark340
착하게살자
mark340
전체 방문자
오늘
어제
  • 분류 전체보기 (98)
    • 백준 (11)
    • 알고리즘 (1)
    • Javascript (17)
    • CS (18)
    • 기타 (9)
    • AI (1)
    • Angular (2)
    • Linux (14)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • JavaScript
  • oauth
  • Closure
  • MySQL
  • parsing

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
mark340

착하게살자

[백준 18870] 좌표 압축 / Map
백준

[백준 18870] 좌표 압축 / Map

2023. 1. 14. 18:40

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

 

18870번: 좌표 압축

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

www.acmicpc.net

 

 

 

 

let input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n')
let arr = input[1].split(' ').map(Number)
 /// [ 2, 4, -10, 4, -9 ] 입력된 좌표
let set = [...new Set(arr)].sort((a,b) => a-b)
 //  [-10, -9, 2, 4 ] 좌표의 중복을 없애고 오름차순 정렬을 한다
let map = new Map();
 // Map을 이용하여 빈 객체를 생성
set.forEach((item, index) => {
  map.set(item, index)
})
 // 압축좌표의 요소와 인덱스를 객체에 입력


let result = ""
arr.forEach((item) => {
  result += map.get(item) + " "
});
 // 입력된 좌표를 순회하며 map.get으로 인덱스를 받아온다 

console.log(result)

 

  • 문제도 이해하기 어렵고 좌표 압축이란게 뭔지 이해하는 것도 어려웠다.
  • 중복된 값을 없애고 sort하여 새로운 배열을 만드는 것으로 이해하여 해결했다.
  • for문을 사용하면 시간초과로 통과 못한다. => Map으로 객체를 생성하여 인덱스를 받아오는 것으로 해결

 

 

저작자표시 (새창열림)

'백준' 카테고리의 다른 글

[백준 1931] 회의실 배정 / Node.js  (0) 2023.01.23
[백준 2108] 통계학 / 배열 요소의 최빈값 구하기 / Object.entries()  (0) 2023.01.14
[백준 1181번] 단어정렬 / Set(배열중복제거) / localeCompare() (단어정렬)  (0) 2023.01.14
[백준 2587] 대표값2 (Node.js)  (0) 2023.01.10
[백준 2738] 행렬 덧셈 (Node.js) / 자바스크립트 행렬끼리 덧셈  (0) 2023.01.09
    '백준' 카테고리의 다른 글
    • [백준 1931] 회의실 배정 / Node.js
    • [백준 2108] 통계학 / 배열 요소의 최빈값 구하기 / Object.entries()
    • [백준 1181번] 단어정렬 / Set(배열중복제거) / localeCompare() (단어정렬)
    • [백준 2587] 대표값2 (Node.js)
    mark340
    mark340
    착하게삽시다

    티스토리툴바