const input = require("fs").readFileSync("/dev/stdin", "utf-8").trim().split("\n");
const p = input.shift();
let tmp = [];
for(let i = 0; i < input.length; i++){
tmp.push(input[i]);
}
const set = new Set(tmp);
const newArr = [...set];
let result = "";
newArr.sort((a, b) => {
if(a.length === b.length){
return a.localeCompare(b);
}
return a.length - b.length;
}).forEach((item) => {
result += `${item}\n`;
})
console.log(result);
문제를 풀면서 다양한 method 활용의 중요성을 깨달아가고 있습니다.
문제의 요구사항에 맞추기 위해 배열에 넣은 후 new Set을 활용해 중복 단어를 제거하였습니다.
중복 단어가 제거된 newArr배열을 sort하였습니다. 이때 a.length와 b.length가 같을 때 a.localeCompare(b)를 통해 사전식 순서로 비교하였습니다. 길이가 다른 경우, a.length - b.length를 통해 짧은 길이가 앞에 오도록 배치하였습니다. 이후 결과를 반환할 result를 선언 후 forEach를 통해 하나씩 담아준 후 반환하였습니다.
localeCompare() 메서드는 두 개의 문자열을 비교하여 한 문자열이 다른 문자열보다 큰지, 작은지, 같은지를 결정하는 JavaScript 내장 함수입니다.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare