코딩테스트 대비/백준 알고리즘
BOJ - 1181 단어 정렬
JellyApple
2024. 5. 23. 00:09
문제 : https://www.acmicpc.net/problem/1181
문제 등급: 실버5
문제 풀이: 길이가 짧은 것부터라는 조건이 있으니 정렬 기능이 들어가야 할 것이라 생각했고 또한 중복된 단어는 허용하지 않는다는 조건으로 인해 Set 즉 집합 조건을 생각할 수 있었다. 길이가 같으면 사전순이라는 말 또한 JS에서는 return 1 , 0 , -1 을 통해 오름차순 , 동치 , 내림차순을 필터링 해준다는 것을 알 수 있었다.
시간복잡도 : O(NlogN)
const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().split("\n");
let N = Number(input[0]);
// 1. 입력 받음
let arr = [];
for(let i=1;i<=N;i++){
arr.push(input[i]);
}
// 2. 중복 제거
const setArr = [... new Set(arr)];
// 3. 정렬
setArr.sort((a,b) => {
if(a.length !== b.length) {
return a.length - b.length; // 길이순 정렬
} else { // 길이가 같을 시
if(a>b) { // a>b 즉, 오름차순으로 정렬했을 시
return 1;
} else if(a<b) { 즉, 내림차순으로 정렬했을 시
return -1;
} else return 0; // 두 값이 같을 시
}
for(let point of setArr){
console.log(point);
}