• 기본로직

    1. 실행파일에 문자열로 퍼즐 정보를 받아온다
      • argc, argv 이용, argc는 기본 값 : 1, argv[0] = ‘실행 중인 파일 경로’
      • argc ≠ 2 라면 문자열 정보가 1개가 아니기 때문에 Error
    2. 퍼즐 정보를 카운팅해서 n % 4 != 0이면 에러로 처리
      • 입력 값 개수의 유효성 체크
    3. 문자열로 들어온 퍼즐 정보를 int형 배열로 split한다
      • space 를 기준으로 문자열을 split하고 공백이 여러개가 들어와도 상관 없다.
      • 공백이 아닌 문자가 연속해서 들어오면 에러 처리
        • 애당초 두 자리 숫자가 조건에 올 수 없기 때문
    4. 만든 int 배열의 요소들을 돌면서 1 <= x <= n이 아니면 예외로 처리한다.
    5. n을 토대로 n + 2 사이즈의 배열 보드를 만든 뒤, 모든 요소를 0으로 초기화하고, int형 배열로 만든 정보를 토대로 퍼즐의 형태를 만들어준다

    Screen Shot 2022-09-05 at 2.37.44 PM.png

    1. 입력된 정보를 토대로 확실한 부분에 수를 채운다.
    2. visited라는 board 와 같은 사이즈의 배열을 만들어 고정 값이 들어 있는 칸에는 -1을 넣어둔다.
    3. count를 0부터 [1, 1] , [1, 2], ... [4, 4]까지 총 n * n 번 이동하는데 이 때 visited배열을 참고하면서 해당 자리의 값이 -1이면 다음칸으로 count를 1 증가시켜 이동한다
    4. 빈 칸을 만나게되면 해당 위치와 같은 행, 열에 1 ~ n까지의 수 중 없는 수의 배열을 만든다.
    5. 위에서 만든 배열은 오름차순이고, 낮은 수부터 넣어보면서 다음칸으로 이동한다.
    6. 이동하면서 넣을 수 있는 값이 없으면 이전 칸으로 다시 돌아가서 진행 중이던 while문을 이어서 실행한다.
    7. count == n * n이 되면 마지막 칸까지 도착했다는 의미이므로 이 때 모든 행과 열이 프로그램 시작할 때 받아왔던 문자열의 조건을 만족하는지 확인하고 만족한다면 화면에 출력한다.