728x90
문제
https://www.acmicpc.net/problem/1431
코드
//실버3 시리얼 번호
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\r\n");
//문자열 속 숫자들을 더해주는 함수
function sum(str) {
let result = 0;
str = str.replace(/[^0-9]/g, ""); //문자열에서 숫자를 제외한 문자는 없애기
str = str.split("").map((i) => parseInt(i)); //숫자도 문자로 돼있으니 number형으로 변환
for (let i of str) result += i; //각 숫자들을 더하기
return result;
}
input.shift(); //기타의 개수 N
input = input.sort((a, b) => {
if (a.length > b.length) return 1;
//길이 순대로 정렬(오름차순)
else if (a.length < b.length) return -1;
else {
if (sum(a) > sum(b)) return 1;
//숫자의 합에 따른 정렬(오름차순)
else if (sum(a) < sum(b)) return -1;
else {
if (a > b) return 1;
//사전순으로 정렬
else return -1;
}
}
});
console.log(input.join("\n"));
후기
- 문자와 숫자가 혼합된 문자열에서 문자만 빼거나, 숫자만 빼기 위해서는 정규식을 이용하면 쉽게 뺄 수 있다!
'알고리즘 > BOJ' 카테고리의 다른 글
[백준] 차집합 / JavaScript / node.js (0) | 2022.02.03 |
---|---|
[백준] 접미사 배열 / JavaScript / node.js (0) | 2022.02.03 |
[백준] 국영수 / JavaScript / node.js (0) | 2022.02.03 |
[백준] K번째 수 / JavaScript / node.js (0) | 2022.02.03 |
[백준] 알파벳 개수 / JavaScript / node.js (0) | 2022.02.02 |