[Baekjoon] 1181 - 단어 정렬

Chobby·2023년 11월 6일
1

Baekjoon

목록 보기
60/108

😀문제

알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.

길이가 짧은 것부터
길이가 같으면 사전 순으로
단, 중복된 단어는 하나만 남기고 제거해야 한다.


😁입력

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.


😂출력

조건에 따라 정렬하여 단어들을 출력한다.

예제 입력 1 
13
but
i
wont
hesitate
no
more
no
more
it
cannot
wait
im
yours
예제 출력 1 
i
im
it
no
but
more
wait
wont
yours
cannot
hesitate

🤣출처

  • 문제를 만든 사람: author5

😃알고리즘 분류

  • 문자열
  • 정렬

😎나의풀이

// ["13", "but", "i", "wont", ...]
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n')
// ["but", "i", "wont", ...]
input.shift()
// ["but", "i", "wont", ...] 중복제거
const removeDuplicatedInputs = input.filter((a, i, origin) => origin.indexOf(a) === i)
// ["i", "im", "it", ...]
removeDuplicatedInputs.sort((prev, cur) => {
    if(prev.length !== cur.length) return prev.length - cur.length
    if(prev > cur) return 1
    else if(prev === cur) return 0
    else return -1
})
// "i\nim\nit..."
const result = removeDuplicatedInputs.join("\n")

console.log(result)
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글