Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 프론트엔드
- HTTP/0.9
- 백준
- Nginx개념
- Nginx
- HTTP/1.0
- docker
- HTTP/2.0
- Javascript
- CS
- HTTP버전
- 도커기본개념
- http 메소드
- JavsScript
- 헬스
- 취준생
- 컴퓨공학과
- 자바스크립트
- IT
- 컴퓨터공학과
- HTTP/3.0
- 도커 컨테이너
- HTTP
- 운동
- Jupyter notebook
- 도커명령어
- CS기술면접
- 코딩테스트
- gunicorn
- Python
Archives
- Today
- Total
dogo_ day
JavaScript 코딩테스트 10. 문제(백준 18870번) 본문
🔅알고리즘 난이도 Lv. 2
🌈문제풀이
문제를 이해하기가 조금 난해했다.
N개의 좌표 Xn을 좌표 압축을 적용했을 때 새로운 좌표 X`n이 생성된다.
X'n의 좌표는 새로운 특징을 가지고 있다.
X' i번째 좌표의 값은 i번째 X좌표 > j번째 X좌표 를 만족하는 개수이다.
즉, X좌표에서 가장 작은 값은 새로운 좌표에서는 0의 값을 가진다.
그 다음 작은 값은 새로운 좌표에서느 1의 값을 가진다.
정렬을 이용하면 해결할 수 있는 알고리즘이다.
Set과 Map을 활용하면 문제를 해결 할 수 있다.
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let n = Number(input[0]);
let arr = input[1].split(' ').map(Number);
let uniqueArray = [...new Set(arr)];
uniqueArray.sort((a, b) => a - b)
let myMap = new Map();
for(let i = 0; i < uniqueArray.length; i++)
myMap.set(uniqueArray[i], i);
let result = '';
for(const x of arr)
result += myMap.get(x) + ' ';
console.log(result);
참고자료
패스트캠퍼스 - JavaScript 코딩테스트 131개 예재 & CS지식으로 끝내기
'IT > 코딩테스트_' 카테고리의 다른 글
JavaScript 코딩테스트 11. 문제(백준 10814번) (0) | 2023.05.07 |
---|---|
JavaScript 코딩테스트 9. 문제(백준 11650번) (0) | 2023.05.03 |
JavaScript 코딩테스트 8. 문제(백준 2675번) (0) | 2023.04.29 |
JavaScript 코딩테스트 7. 문제(백준 11720번) (0) | 2023.04.29 |
JavaScript 코딩테스트 6. 문제(백준 3052번) (0) | 2023.04.29 |