문제 : 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);
}
'코딩테스트 대비 > 백준 알고리즘' 카테고리의 다른 글
BOJ - 10814 나이순 정렬 (0) | 2024.05.25 |
---|---|
BOJ - 18870 좌표 압축 (0) | 2024.05.25 |
BOJ - 15651 좌표 정렬하기 2 (0) | 2024.05.22 |
BOJ - 11650 좌표 정렬하기 (0) | 2024.05.19 |
BOJ - 11004 K번째 (0) | 2024.05.19 |