haju__log

[python][SWEA][D2] 1974. 스도쿠 검증 본문

SWEA

[python][SWEA][D2] 1974. 스도쿠 검증

haju 2023. 5. 15. 15:33

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&problemLevel=3&contestProbId=AV5Psz16AYEDFAUq&categoryId=AV5Psz16AYEDFAUq&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=PYTHON&select-1=3&pageSize=10&pageIndex=6 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

✅ 문제 풀이

  • 가로 줄 검사, 세로 줄 검사, 3*3박스 검사 필요
  • ㄴ 배열로 1~9 숫자를 만들고, 있는 숫자를 제거해, 만약 배열에 없으면 바로 조건 탈락
  • 3*3박스 반복문 짜는 거에서 시간이 많이 걸림.. 😂
T=int(input())

for test_case in range(1,T+1):
    s=[list(map(int,input().split())) for _ in range(9)]
    row=1 #행, 가로줄
    col=1 #열, 세로줄
    sq=1 # 3*3 박스
    #행 검사
    for i in range(9):
        a=[1,2,3,4,5,6,7,8,9]
        for j in range(9):
            if s[i][j] in a:
                a.remove(s[i][j])
            else:
                row=0
    # 열 검사
    for i in range(9):
        a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
        for j in range(9):
            if s[j][i] in a:
                a.remove(s[j][i])
            else:
                col = 0
    # 3*3 박스 검사
    for i in range(3):
        for j in range(3):
            a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
            for k in range(3):
                for l in range(3):
                    if s[3*i+k][3*j+l] in a:
                        a.remove(s[3*i+k][3*j+l])
                    else:
                        sq = 0

    if row==1 and col==1 and sq==1 :
        print("#%d %d" %(test_case,1))
    else:
        print("#%d %d" %(test_case,0))