sm 기술 블로그
81. 1181(단어정렬) 본문
let input = require('fs').readFileSync(0).toString().trim().split("\n");
input.shift();
let inputArr = Array.from(new Set(input));
inputArr.sort((a, b) => {
let aLength = a.length;
let bLength = b.length;
if(aLength != bLength){
if(aLength > bLength){
return 1;
}
else if(aLength < bLength){
return -1;
}
}
for(let i=0; i<aLength; i++){
if(a.charAt(i) > b.charAt(i)){
return 1;
}
else if(a.charAt(i) < b.charAt(i)){
return -1;
}
}
})
console.log(inputArr.join("\n"));
자바스크립트는 문자를 하나하나 비교해야한다 생각하여 문자열을 하나하나로 나누어서 sort하도록 오버라이딩[부모의 메소드를 상속받고 입맛에 따라 재정의 함]을 하였다.
그래서 위와같은 코드가 나왔다.
하지만 문자열 자체만으로 비교가 가능했다.
let input = require('fs').readFileSync(0).toString().trim().split("\n");
input.shift();
let inputArr = Array.from(new Set(input));
inputArr.sort((a, b) => {
if(a.length == b.length){
if(a > b){
return 1;
} else if(a < b){
return -1;
} else{
return 0;
}
}
return a.length - b.length;
});
console.log(inputArr.join("\n"));
참고로 시간은 첫번째가 조금 더 느리다
'문제 > 백준_자바스크립트' 카테고리의 다른 글
83. 18870 (좌표압축) (0) | 2022.06.18 |
---|---|
82. 10814(나이순 정렬) (0) | 2022.06.17 |
80. 11651(좌표 정렬하기2) (0) | 2022.06.16 |
79. 11650(좌표 정렬하기) (0) | 2022.06.15 |
78. 1427(소트인사이드) (0) | 2022.06.14 |
Comments