문제 내용은 입력으로 문자열을 받되, 문자열의 순서만 다르고 들어있는 값이 동일할 경우에는(cat, tca) 같은 값으로 치도록 해서, 최소 문자열 그룹의 갯수를 출력해줘야 한다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedHashSet;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
HashSet<String> set = new LinkedHashSet<>();
for (int i = 0; i < count; i++) {
String[] split = br.readLine().split("");
Arrays.sort(split);
StringBuilder sb = new StringBuilder();
Arrays.stream(split).forEach(sb::append);
set.add(sb.toString());
}
System.out.println(set.size());
}
}
문제를 보면 최대 입력이 100개 정도로 매우 적기 때문에, 문자열을 split 으로 쪼갠 뒤 Arrays.sort로 정렬해서 StringBuilder에 넣어준 후 Set에 add 하는 식으로 진행해주면
문자열 순서는 달라도 정렬에 따라 동일하게 배치되고, 이후 Set에 넣어주면 중복을 허용하지 않기 때문에 입력받은 모든 값을 Set에 넣어준 후 Set의 크기를 출력해주면 끝이다.
Leave a Reply