백준/ Gold 4 문제 , 백준 Node.js 자바스크립트 23884 알고리즘 수업 - 선택 정렬 4 [ 정렬 ]
✔️Check Point ! ( 해당사항 ✓체크 )
1. 막힘 없이 수월하게 풀린 문제인가?
2. 1시간이내로 풀렸던 문제인가?
3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?
4. 시간을 써도 도무지 풀 수 없는 문제인가?
5. 솔루션을 찾아봤는가?
-------------------------------------------------------------------------------------------
난이도 체감 🧑💻
1. 최상
2. 상
3. 중
4. 하
이해도 🙆♂️
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함
문제 출처 🏠
https://www.acmicpc.net/problem/23884
문제풀이 소감 🧑💻
23883 이랑 같은 문제입니다.
* 풀이법에 대해서는 23883 문제 풀이에 상세히 적어두었습니다. 참고바랍니다.
정답 💯
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
const [input_N, input_K] = input[0].split(" ").map(Number);
input.shift();
const [...input_nums] = input[0].split(" ").map(Number);
function solution(N, K, nums) {
const sortedNums = [...nums].sort((a, b) => a - b);
const position = {};
nums.forEach((v, i) => {
position[v] = i;
});
let cnt = 0;
for (let j = N - 1; j >= 0; j--) {
if (nums[j] !== sortedNums[j]) {
const MIN = nums[j];
const MAX = sortedNums[j];
nums[j] = MAX;
nums[position[MAX]] = MIN;
position[MIN] = position[MAX];
position[MAX] = j;
cnt += 1;
if (cnt === K) {
console.log(nums.join(" "));
break;
}
}
}
if (cnt < K) console.log(-1);
}
solution(input_N, input_K, input_nums);
반응형