Algorithm

[Baekjoon]16499번 동일한 단어 그룹화하기 - Javascript

호밀이 2024. 2. 2. 19:30

https://www.acmicpc.net/problem/16499

 

16499번: 동일한 단어 그룹화하기

첫째 줄에 단어의 개수 N이 주어진다. (2 ≤ N ≤ 100) 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 소문자로만 이루어져 있고, 길이는 10을 넘지 않는다.

www.acmicpc.net

문제

소문자로 이루어진 단어 N개가 주어졌을 때, 단어가 총 최소 몇 개의 그룹으로 이루어져 있는지 구하는 프로그램을 작성하시오.

그룹에 속한 단어는 모두 같은 알파벳으로 이루어져 있어야 하고, 개수도 같아야 한다. 즉, 단어를 구성하는 알파벳의 순서만 달라야 한다.

입력

첫째 줄에 단어의 개수 N이 주어진다. (2 ≤ N ≤ 100) 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 소문자로만 이루어져 있고, 길이는 10을 넘지 않는다.

출력

첫째 줄에 그룹의 최소 개수를 출력한다.

예제 입력 1 복사

4
cat
dog
god
tca

예제 출력 1 복사

2

예제 입력 2 복사

2
a
a

예제 출력 2 복사

1

 

문제풀이(1)

1. 정해진 단어들을 오름차순으로 정렬한다.
2. set 객체를 활용하여 중복되는 단어들을 제거한다.
3. 중복이 제거된 set 객체의 size를 출력한다.

const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
const [N, ...arr] = require("fs").readFileSync(filePath).toString().trim().split("\n");

const setArr = new Set();

arr.forEach((el) => {
  setArr.add(el.split("").sort().join(""));
});

console.log(setArr.size);