백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 1431 , 시리얼 번호 [정렬]
풀이 시간
Check Point ! ( 해당사항 ✓체크 )
1. 막힘 없이 수월하게 풀린 문제인가?
2. 1시간이내로 풀렸던 문제인가?
3. 1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?
4. 시간을 써도 도무지 풀 수 없는 문제인가?
5. 솔루션을 찾아봤는가?
-------------------------------------------------------------------------------------------
난이도 체감
1. 최상
2. 상
3. 중
4. 하
<이해도>
1. 완벽히 이해
2. 다소 헷갈리는 부분들이 있음
3. 이해 못함
<덧붙일 말>
파이썬으로하면 걍 key=lamda 에 인덱스 담아서 sort 하면 바로 답나오는데
자바스크립트로 다중조건을 처음 접해봐서 스스로 만들어 해볼려니까 너무 오래걸렸다.
이 문제 통해서 다중 조건 정렬을 제대로 익힌듯하다.
+) 예제,반례 다 잘 돌아가는 계속 11퍼에서 틀리길래 뭔가 겁나 오래 고민했는데, 인덱스 하나를 잘못쓴 어처구니 없는 실수 까지 ㅋ.ㅋ
문제 출처
https://www.acmicpc.net/problem/1431
풀이
이 문제는 다른거 없고 다중 조건 정렬만 할 줄 알면 쉽게 풀릴 것이다.
자바스크립트로 다중 조건 정렬을 하는 법을 알아보자.
위의 코드는 오름차순 정렬이다.
1번 인덱스를 기준으로 오름 차순을 정렬하고 만약 1번인덱스 값이 서로 같다면 2번인덱스를 기준으로 오름차순으로 정렬하는 코드이다.
위 코드만 제대로 이해해도 이제 응용해서 다중 조건 정렬 코드를 제대로 작성할 수 있을 것이다.
정답
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n");
const Check = (C) => {
const list = [...new Array(C.length)].map(() => []);
for (let i = 0; i < C.length; i++) {
let cnt = 0;
let dic = [];
list[i].push(C[i], C[i].length);
for (let j = 0; j < C[i].length; j++) {
let num = C[i].charCodeAt([j]);
if (!isNaN(C[i][j])) {
cnt += Number(C[i][j]);
}
dic.push(num);
}
list[i].push(cnt);
for (let k of dic) {
list[i].push(k);
}
}
return list;
};
// 입력
const T = input.shift().split().map(Number);
arr = [];
for (let i = 0; i < T; i++) {
arr.push(input.shift().trim());
}
let result = Check(arr);
result.sort((a, b) => {
if (a[1] < b[1]) return -1;
if (a[1] > b[1]) return 1;
if (a[2] < b[2]) return -1;
if (a[2] > b[2]) return 1;
let ind = 2;
while (ind < a.length) {
if (a[ind] === b[ind]) {
ind += 1;
} else {
if (a[ind] < b[ind]) return -1;
if (a[ind] > b[ind]) return 1;
}
}
});
for (let i of result) {
console.log(i[0]);
}
반응형
'알고리즘 공부 > 백준 - 자바스크립트' 카테고리의 다른 글
백준/ Silver 3 문제 , 백준 Node.js 자바스크립트 20291 , 파일 정리 [정렬] (1) | 2022.09.08 |
---|---|
백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 1755 , 숫자놀이 [정렬] (0) | 2022.09.07 |
백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 1946 , 신입 사원 [정렬] (0) | 2022.09.06 |
백준/ Silver 4 문제 , 백준 Node.js 자바스크립트 1015 , 수열 정렬 [정렬] (0) | 2022.09.06 |
백준/ Silver 1 문제 , 백준 Node.js 자바스크립트 24479 , 지름길 (0) | 2022.09.05 |