2580번 - 스도쿠
저는 문제를 이렇게 풀었어요(맞추긴 했습니다)
"빈칸이 채워지는 조건이 항상 맞다는 가정 하에 마지막 빈칸이 채워지면 스도쿠 풀이 끝"
이렇게 풀었는데
exit(0)를 하지 않으면, 즉 프로그램 강제 종료하지 않는 이상 마지막 빈칸이 채워져도
다시 스택에 있는 걸 꺼내서 또 다시 다음 숫자를 대입하더라구요
예를 들어 0 0 0 ... 0 0 0을 넣어다 치면
dfs(81,81)에서 종료해야하는데(81번째 빈칸, 즉 마지막 빈칸을 채움)
dfs(81,81)전에 스택에 있던 dfs(80,80)의 그 다음 코드를 실행, 그 전 스택 다음 코드 실행....이렇게되서 실행을 너무 많이 하더라구요
이럴 땐 무슨 재귀 함수 종료 조건을 써야할까요?
(함수가 정상 종료되었으면 좋겠습니다)
dfs에서 정답이 만들어졌는지를 리턴하고, 어떤 숫자를 채웠을 때 정답이 만들어졌으면 바로 정답이 만들어졌음을 리턴하면 됩니다.
간단한 거였는데 어제 풀 때 스도쿠 푸는거 자체에만 너무 머리를 썼는지
생각을 못했네요
댓글 보자마자 해결했습니다 ㅎㅎ...
댓글을 작성하려면 로그인해야 합니다.
dltjr0703 2년 전
저는 문제를 이렇게 풀었어요(맞추긴 했습니다)
"빈칸이 채워지는 조건이 항상 맞다는 가정 하에 마지막 빈칸이 채워지면 스도쿠 풀이 끝"
이렇게 풀었는데
exit(0)를 하지 않으면, 즉 프로그램 강제 종료하지 않는 이상 마지막 빈칸이 채워져도
다시 스택에 있는 걸 꺼내서 또 다시 다음 숫자를 대입하더라구요
예를 들어 0 0 0 ... 0 0 0을 넣어다 치면
dfs(81,81)에서 종료해야하는데(81번째 빈칸, 즉 마지막 빈칸을 채움)
dfs(81,81)전에 스택에 있던 dfs(80,80)의 그 다음 코드를 실행, 그 전 스택 다음 코드 실행....이렇게되서 실행을 너무 많이 하더라구요
이럴 땐 무슨 재귀 함수 종료 조건을 써야할까요?
(함수가 정상 종료되었으면 좋겠습니다)