

사용한 자료구조 : Set
HashSet 은 요소의 순서를 보장하지 않기때문에 빠르게 요소에 접근이 가능하다 O(1)
LinkedHashSet 은 삽입 순서를 보장하고, HashSet과 비교해서 속도면에서 동일한 성능을 보이지만, 이중연결 리스트를 추가로 유지하고있기 때문에 더 큰 메모리를 가져간다. O(1)
TreeSet 은 요소의 정렬기준으로 순서를 보장하기 때문에(a, b, c 또는 1, 2, 3 등등) 속도는 비교적 느릴수 있다. O(log n)
✏️현재 코드에서는 효율적인 HashSet이 더 낫다고 생각해 HashSet을 사용하여 문제에 접근했다.
다음 단어와 비교하기 위해서Set<String> set = new HashSet<>();
set.add(words[0]);
for (int i = 1; i < words.length; i++) {
String cur = words[i - 1];
String next = words[i];
if (set.contains(next) || cur.charAt(cur.length() - 1) != next.charAt(0)) {
int fail = (i % n) + 1;
int turn = (i / n) + 1;
return new int[] {fail, turn};
}
set.add(next);
return new int[] {0 ,0};
import java.util.*;
class Solution {
public int[] solution(int n, String[] words) {
Set<String> set = new HashSet<>();
set.add(words[0]);
for (int i = 1; i < words.length; i++) {
String cur = words[i - 1];
String next = words[i];
if (set.contains(next) || cur.charAt(cur.length() - 1) != next.charAt(0)) {
int fail = (i % n) + 1;
int turn = (i / n) + 1;
return new int[] {fail, turn};
}
set.add(next);
}
return new int[] {0 ,0};
}
public static void main(String[] args) {
Solution sol = new Solution();
int n = 3;
String[] words = {"tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"};
System.out.println(Arrays.toString(sol.solution(n, words)));
}
}
