풀이)
처음엔 입력받은 문자열을 정렬한 후 배열을 set으로 바꿔 중복을 없애는 식으로 풀었으나, 그렇게 되면 'apple'과 'paple'을 같은 단어로 인식하게 된다.
어차피 입력은 최대 길이 50의 문자열 최대 50개이므로 차라리 입력받은 한 단어에 대한 모든 조합을 만들고, 다음 문자열들과 이를 비교해가며 중복을 지우는 편이 낫다.
내 코드)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Main {
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
ArrayList<String>[] arr = new ArrayList[n];
int cnt = 0;
for (int i = 0; i < n; i++) {
arr[i] = new ArrayList<>();
String cur = br.readLine();
for (int j = 0; j < cur.length(); j++)
arr[i].add(cur.substring(j) + cur.substring(0, j));
boolean chk = true;
for (int j = 0; chk && j <= i-1; j++) {
for (int k = 0; chk && k < arr[j].size(); k++) {
if (cur.equals(arr[j].get(k))) chk = false;
}
}
if (chk)
cnt++;
}
System.out.println(cnt);
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}