seunghyun Note

백준 1181 : 단어 정렬 본문

코딩테스트/백준

백준 1181 : 단어 정렬

승숭슝현 2024. 3. 6. 10:38
728x90
반응형

 

링크 : https://www.acmicpc.net/problem/1181

 

1181번: 단어 정렬

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

www.acmicpc.net

문제 풀이

 

1. Set을 통한 배열 중복 제거

arr = [...new Set(arr)];

2. sort를 할 때 길이가 같을 때, 다를 때 구분

arr.sort((a, b) => {
  if (a.length !== b.length) return a.length - b.length;
  return a > b ? 1 : -1;
});

 

 

const input = (
  process.platform == "linux"
    ? require("fs").readFileSync("/dev/stdin").toString()
    : require("fs").readFileSync("예제.txt").toString()
)
  .trim()
  .split("\n");

let arr = [];
for (let i = 1; i < input.length; i++) {
  arr.push(input[i]);
}

arr = [...new Set(arr)];

arr.sort((a, b) => {
  if (a.length !== b.length) return a.length - b.length;
  return a > b ? 1 : -1;
});

let ans = "";
arr.forEach((element) => {
  ans += element + "\n";
});
console.log(ans);
728x90
반응형