그 부분은 관계 없다고 보입니다.
문제는 dfs를 하는 부분에 있는데, 중복 방문을 제거하기 위해 많은 노력을 하신 것 같지만 사실은 여전히 중복 방문이 일어날 수 있습니다.
아래와 같은 케이스에서 dfs는 1 2 3 4 5 6 을 출력해야 합니다.
dfs 문제에서 일반적으로는 간선을 제거하려고 할 필요가 없습니다. 정점에 방문 체크를 해주고, 이미 방문한 정점이면 단순히 스택이 넣지 않으면 되기 때문입니다. 지금처럼 일반적인 리스트에서 간선을 하나씩 지워내는 것은 시간복잡도상으로도 좋지 못합니다.
팁으로, dfs는 직접 스택을 이용하는 것보다 재귀 함수로 구현하는 것이 편합니다.
park345601 5년 전
코드를 짜고 올라온 반례들을 질문게시판을 뒤져가며 어느정도 다 고친것 같은데
ArrayList[] a = (ArrayList[]) new ArrayList[n];
코드 중에 이부분에서
type safety :unchecked cast from ArrayList[] to ArrayList<Integer>[]
라고 뜨면서 SuppressWarnings 어노테이션을 붙이라고 뜨는데
이것때문에 코드가 틀렸다고 나올수도 있는건가요?
그리고 형식에 맞는게 아니면 어떻게 써야될까요..?
arraylist를 element로 갖는 배열을 만들고 싶었는데 잘 모르겠어서 도움부탁드립니다!