문제/백준_자바스크립트
81. 1181(단어정렬)
sm_hope
2022. 6. 17. 09:21
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"));
참고로 시간은 첫번째가 조금 더 느리다