백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 1015 , 수열 정렬 [정렬]
풀이 시간
Check Point ! ( 해당사항 ✓체크 )
1. 막힘 없이 수월하게 풀린 문제인가?
2. 1시간이내로 풀렸던 문제인가?
3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?
4. 시간을 써도 도무지 풀 수 없는 문제인가?
5. 솔루션을 찾아봤는가?
-------------------------------------------------------------------------------------------
난이도 체감
1. 최상
2. 상
3. 중
4. 하
<이해도>
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함
<덧붙일 말>
문제 출처
https://www.acmicpc.net/problem/1015
풀이
처음에 문제 읽고 이게 뭔 소리지~ 싶었는데 이해한 내용을 간단하게 설명해보자면 주어진 배열을 오름차순으로 정렬하면 각 값들이 가지는 0~N-1까지의 인덱스가 있다. 그걸 원래 처음 주어진 배열에 맞게 인덱스를 배치하면 된다.
예를 들어
3
2 3 1
이걸 보면
2 3 1 을 오름차순 정렬 하면 1 2 3이다. 각 인덱스는 0 1 2 가 될것이다
1 - 0
2 - 1
3 - 1
원래 배열에서 각 값들이 오름차순에서 가지는 이 인덱스를 배치해주면 된다.
2 3 1 이니까
답은 1 2 0 이 되겠다.
정답
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
const ArrIndex = (A) => {
cnt = 0;
for (i of A) {
checkIndex[i][checkIndex[i].length] = cnt;
cnt += 1;
}
return;
};
const T = input.shift();
arr = input.shift().split(" ").map(Number);
checkIndex = [...new Array(1001)].map(() => []);
const tmp = arr.slice();
tmp.sort((a, b) => a - b);
ArrIndex(tmp);
answer = [];
arr.map((v) => {
answer = [...answer, checkIndex[v][0]];
checkIndex[v].splice(0, 1);
});
console.log(answer.join(" "));
반응형
'알고리즘 공부 > 백준 - 자바스크립트' 카테고리의 다른 글
백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 1431, 시리얼 번호 [정렬] (0) | 2022.09.06 |
---|---|
백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 1946 , 신입 사원 [정렬] (0) | 2022.09.06 |
백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 24479 , 지름길 (0) | 2022.09.05 |
백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 24479 , 알고리즘 수업 - 깊이 우선 탐색 1 (0) | 2022.09.05 |
백준/ Silver 2 문제 , 백준 Node.js 자바스크립트 5567 , 결혼식 (0) | 2022.09.05 |