ebseud6135   4년 전

한번 삽입 할때마다 check메소드로 검사하기 때문에

시간초과인 것도 알겠고 다른 효율적인 구현방법들이 있다는 것도 알고있습니다..

하지만 저의 의문점은

0 0 0 0 0 0 0 0 0 

0 0 0 0 0 0 0 0 0 

0 0 0 0 0 0 0 0 0 

0 0 0 0 0 0 0 0 0 

0 0 0 0 0 0 0 0 0 

0 0 0 0 0 0 0 0 0 

0 0 0 0 0 0 0 0 0 

0 0 0 0 0 0 0 0 0 

0 0 0 0 0 0 0 0 0 


이 예제가 1초안에 통과를 하는데

왜 시간초과가 나오는지 모르겠습니다.

위의 예제보다 더 시간이 오래걸리는 반례가 있나요?

게시판의 코드들도 대부분? 1초안에 통과했습니다..


다른 반례가 있다면 이유도 좀 부탁합니다.. 고수님들 ㅠㅠㅠㅠ         

djm03178   4년 전

0으로 가득 채워진 판은 매우 금방 답 하나를 찾아낼 수 있기 때문에 빠릅니다.

https://en.wikipedia.org/wiki/Sudoku_solving_algorithms 에 있는, 일반적인 브루트 포스를 가장 오래 걸리게 하는 예시를 넣으면 아주 아주 오랜 시간이 걸리는 것을 볼 수 있습니다.

물론 이 예시는 정말로 브루트 포스가 최악이 되도록 만든 것이고, 이 문제에서 이렇게 강력한 예시는 암묵적으로 쓰지 않고 있지만 (이 케이스를 넣었다간 거의 대부분의 정답 코드들이 날아갈 것입니다), 이에 준하는 정도의 케이스는 얼마든지 있을 수 있습니다.

ebseud6135   4년 전

전부 0인 경우가 가장 느린 것이 아니였군요..

저의 얕은 지식에 한숨이 나오는군여..

고수님 감사합니다 ~~~~~b

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