| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- 21313 nodejs
- 노마드스터디
- flex box
- 자바스크립트 함수
- 11047 node.js
- 14655 nodejs
- 1541 node.js
- 1931 node.js
- 백준25176
- 백준1026
- 모던자바스크립트
- Javascript
- 개발자
- 백준21313
- 개인프로젝트
- 2217 node.js
- 자바스크립트 일급객체
- 1789 node.js
- IT5분잡학사전
- const
- CSS flex
- 모던자바스크립트 딥다이브
- 백준1789
- 노개북
- 모던자바스크립트DeepDive
- 자바스크립트 딥다이브
- 노마드북클럽
- 1026 node.js
- 코딩
- 11399 node.js
Archives
- Today
- Total
캐또's coding
18870 - 좌표 압축 -node.js 본문
https://www.acmicpc.net/problem/18870
18870번: 좌표 압축
수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌
www.acmicpc.net
우선 문제를 풀기 전 좌표 압축이 무엇인지 좌표 압축을 왜 해야 하는 것인지 그 개념에 대해 이해할 필요를 느꼈다.
좌표압축은 간단히 말하자면 "데이터를 정렬, 다시 순서를 부여하기"인데 억단위가 넘어가는 데이터 중 중요한 구간이나 중요한 순자만 들고 있는 것을 말한다.
해당 문제의 설명 아래에도 다음과 같은 설명이 있다.
만약 정확한 값이 필요 없고 값의 대소 관계만 필요하다면, 모든 수를 0 이상 N 미만의 수로 바꿀 수 있습니다.
해당 문제에서는 정확한 값도 필요 없고 값 간에 차가 얼마인지도 필요 없고 그냥 순서만 출력해도 된다.
=> 따라서 모든 값을 정렬하고 값의 순서대로 인덱스를 부여하듯 해도 된다.
const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
//입력 값을 불러 온다.
input.shift();
//첫 번째 값을 뺀다. 따로 쓰지 않으니 선언할당하지 않는다.
const arr = input[0]
.split(" ")
.map(Number)
.sort((a, b) => a - b);
//setArr에 입력 받은 값을 숫자로 변경 후 정렬한다.
const set = new Set(arr);
//중복 값을 제거한다.
const map = new Map();
//정렬된 값에 숫자를 부여하기 위한 Map()
[...set].forEach((item, index) => {
map.set(item, index);
});
//중복 제거된 값들 즉, 각 숫자들에게 index를 붙여준다.
let result = "";
//출력할 결과 result선언
input[0].split(" ").forEach((item, index) => {
result += map.get(+item) + " ";
});
//원래 입력값 각각에 맞는 map 값을 찾아서 result에 추가
console.log(result);
//출력하면 문제 해결
문제 이해도가 떨어져서 사실상 검색을 통해서 문제를 해결했다. 코드를 따라 쳐보고 한 줄씩 읽어보면서 이해할 수 있었던 문제
'기초 공부 > 백준 문제 풀이' 카테고리의 다른 글
| 10870 - 피보나치 수 5 - node.js (0) | 2023.01.18 |
|---|---|
| 10872 - 팩토리얼 - node.js (0) | 2023.01.17 |
| 10814 - 나이순 정렬 - node.js (0) | 2023.01.14 |
| 1181 - 단어 정렬 - node.js (0) | 2023.01.13 |
| 11651 - 좌표 정렬하기 2 - node.js (0) | 2023.01.12 |
Comments