gidskql6671   5년 전

질문 게시판에 있던 테스트 케이스는 모두 맞다고 뜨고, 혼자서 이것저것 넣어봤는데 도저히 반례를 찾을 수가 없습니다 ㅜㅜ

알고리즘은 스택으로 구현하였는데, 방문했는지 여부를 저장하는 visit 배열에 첫 방문때는 1을 저장하였고, 빠져나오면서 2를 저장하였습니다.

그리고 만약 다음 이동할 곳이 이미 방문한 곳, 즉 visit[arr[cur]]이 1이라면 visit[arr[cur]]에 사이클이 시작하는 곳이라는 뜻으로 3을 저장시켜주고 Check를 1로 두어서, 스택을 빠져나오면서 사이클 시작지점까지 Count++을 하도록 하였습니다.

만약 visit[cur] 이 3이라면 사이클 시작지점에 도달한거니깐 Check를 0으로 만들어서 Count를 올리지 않고 빠져나가도록 하였구요.

디버깅을 돌려봐도, 혼자서 생각을 해봐도 알고리즘 상에는 문제가 없어보이고, 실제로 반례를 찾을 수가 없는데 틀렸다고 나오네요 ㅜㅜ

혹시 어디가 문제인지, 혹은 반례가 있다면 알려주신다면 감사하겠습니다.

댓글을 작성하려면 로그인해야 합니다.