티스토리 뷰

이 문제는 쉬운듯했는데 내가 못풀어서그런지 엄청 오래걸렸다.

스도쿠를 잘못 이해해서 힘들었다..ㅠㅠ 

가로 세로 모두 다 1부터 9까지 있는지 확인한다. 만약 한 열이나 행이라도 1부터 9까지 존재하지 않는다면 스도쿠가 아니다.

그리고 3x3의 사각형에 1부터 9까지 존재하는지 확인하고 존재한다면 1로 출력하는 문제이다.


T = int(input())
check = [1,2,3,4,5,6,7,8,9] #스도쿠 검증 리스트
for tc in range(1,T+1):
    arr = []
    row_cnt = [0] * 9
    for i in range(9):
        temp = []
        temp = list(map(int,input().split()))
        if sorted(temp) == check:
            row_cnt[i] = 1 #행에 스도쿠 가능한지 확인
        arr.append(temp)
    #print(arr) #배열 잘 받았는지 확인
    #print(row_cnt)
    col_cnt = [0]*9
    for j in range(9): #열 중심
        temp1 = 0
        for i in range(9):
            temp1 += arr[i][j]
        if temp1 == 45:
            col_cnt[j] = 1
    #print(col_cnt)

    sum1 = 0
    squre_cnt = [0] * 9
    a = 0
    b = 0
    cnt = 0
    for i in range(a,9,a+3):
        for j in range(b,9,b+3): #정사각형
            for x in range(i,i+3):
                for y in range(j,j+3):
                    sum1 += arr[x][y]
                if sum1 == 45:
                    squre_cnt[cnt] = 1
        cnt += 1

    #print(squre_cnt)
    result = 0
    for i in range(9): #row_cnt, col_cnt 안에 있는 리스트 요소들이 모두 다 1이어야 하므로 더해서 18일때만 사각형안의 조건을 봐준다
        if sum(row_cnt) + sum(col_cnt) == 18 and squre_cnt[i] == 1:
            result = 1

    print('#{} {}'.format(tc, result))

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA] 4861. 회문  (0) 2021.02.21
[SWEA] 4864.문자열 비교  (0) 2021.02.20
[SWEA] 2001.파리퇴치  (0) 2021.02.20
[SWEA] 1210.Ladder1  (0) 2021.02.19
[SWEA] 1979.어디에 단어가 들어갈 수 있을까  (0) 2021.02.19
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함