아이패드 앱(의 부가기능) 중에 스도쿠(sudoku) 퍼즐이 있길래 좀 해보다가, 이걸 푸는 프로그램을 C언어로 작성하는 잉여짓을 하게 되었습니다.
기본원리는 그냥 게임의 룰을 반영하여, 모든 빈칸을 채울때까지 반복하는 것이므로 별도의 설명은 필요하지 않을듯 싶고, 다만 문제에 따라서, 숫자를 찍어야(?) 되는 상황이 있는 듯 해서 난수발생함수를 이용하여 이것을 구현하도록 하였습니다.
여기서 만든 건 알고리즘 최적화에 대한 문제가 있을텐데, 전 그런걸 걱정할 수준의 professional programmer가 아니라서 생략하고 순수 노가다를 택했습니다.
스도쿠 퍼즐 문제를 알려주기 위한 입력 파일은 9행 9열을 가진 텍스트 파일의 형태이며, 숫자를 채워 넣어야 하는 빈칸에는 0이 초기값으로 입력되어 있습니다.
샘플 (problem1)
첨부한 코드의 main 함수는 argc 및 argv 라는 매개변수를 받고 있는데요. 이들을 명령행 인자라 부르며, 터미널 콘솔에서 프로그램을 실행할 때 입력한 옵션 값들이 저장됩니다. 자세한 사항은 다음 포스팅에 소개되어 있습니다.
또한 malloc 함수를 이용하여 동적으로 메모리를 할당하고 있는데, 이 기능에 대한 것은 다음 포스팅에 소개되어 있습니다.
C++ 의 클래스를 이용하면 스도쿠 퍼즐을 푸는 객체를 만들수도 있으며, 자세한 사항은 다음 포스팅을 참고하면 좋습니다.