문제 분석 및 설계

1181:단어 정렬 바로가기

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

단어의 개수와 단어를 분리해 중복을 제거한 배열 만들기 ➡️ 길이를 비교 ➡️ 같은 조건에서는 사전순 정렬

접근 방법

onst fs = require("fs");
const lines = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
const [n, ...string] = lines;
const set = new Set([...string]);
const array = [...set]
  .sort((a, b) => {
    if (a.length > b.length) return 1;
    if (a.length === b.length) {
      if (a > b) return 1;
      if (a < b) return -1;
      return 0;
    }
    if (a.length < b.length) return -1;
  })
  .join("\n");

console.log(array);


[ 정렬 알고리즘(Timsort)과 비교 함수의 설계 방식 ]

return이 양수: a가 b보다 뒤에 있어야 한다
return이 음수: a가 b보다 앞에 있어야한다.
return이 0: 순서 변경을 하지않는다.

profile
코드도 짜고, 근육도 짜고

0개의 댓글