비트마스크를 활용해서 (i,j)원소의 값을 구해야 할 경우 (i,j)에 해당하는 열, 행, 그리고 정사각형으로 구성된 구역 각각에서 1~9 숫자중 없는 것을 각각 비트마스크로 표현을 하여 문제를 풀려고 계획했습니다. 그런데 코드의 적합성을 확인하기 전에 자꾸 입력의 값이 틀려지는 문제가 발생하였습니다.;;
소스코드에서 sheet[15][15]에 문자를 입력하게 됩니다. 그런데 입력후 112번째 줄을 통하여 입력한 것을 그대로 확인해보면
sheet[0][0]의 값만 벼경이됩니다. 예를 들어 문제의 예시처럼 첫줄에 0 3 5 4 6 9 2 7 8 을 넣을 경우 출력되는 값이 96 3 5 4 6 9 2 7 8 이 됩니다. 다른 행의 0값은 제대로 출력이되구요. 그리고 이 현상은 102번째 줄에 AddCheck(i, j, sheet[i][j]); 를 실행하지 않으면 문제 없이 출력이 됩니다. AddCheck(i, j, sheet[i][j]);는 (i,j)에 값을 넣었을 경우(ex, sheet[i][j]=3;) 각 행, 열, 그리고 작은 정사각형에 넣은 입력값 (즉 '3') 이 비트마스크로 표시가 되는 함수입니다.
roro7773 5년 전
안녕하세요.
스도쿠 문제를 풀려고 코드를 짰습니다.
비트마스크를 활용해서 (i,j)원소의 값을 구해야 할 경우 (i,j)에 해당하는 열, 행, 그리고 정사각형으로 구성된 구역 각각에서 1~9 숫자중 없는 것을 각각 비트마스크로 표현을 하여 문제를 풀려고 계획했습니다. 그런데 코드의 적합성을 확인하기 전에 자꾸 입력의 값이 틀려지는 문제가 발생하였습니다.;;
소스코드에서 sheet[15][15]에 문자를 입력하게 됩니다. 그런데 입력후 112번째 줄을 통하여 입력한 것을 그대로 확인해보면
sheet[0][0]의 값만 벼경이됩니다. 예를 들어 문제의 예시처럼 첫줄에 0 3 5 4 6 9 2 7 8 을 넣을 경우 출력되는 값이 96 3 5 4 6 9 2 7 8 이 됩니다. 다른 행의 0값은 제대로 출력이되구요. 그리고 이 현상은 102번째 줄에 AddCheck(i, j, sheet[i][j]); 를 실행하지 않으면 문제 없이 출력이 됩니다. AddCheck(i, j, sheet[i][j]);는 (i,j)에 값을 넣었을 경우(ex, sheet[i][j]=3;) 각 행, 열, 그리고 작은 정사각형에 넣은 입력값 (즉 '3') 이 비트마스크로 표시가 되는 함수입니다.
혹시 왜 이런 현상이 발생하는 것일까요..ㅜㅜ
알려주시면 감사하겠습니다..