swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Psz16AYEDFAUq&categoryId=AV5Psz16AYEDFAUq&categoryType=CODE

 

SW Expert Academy

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

swexpertacademy.com


  • 해당 영역의 유효성을 검사하는데에는 set 으로의 형변환을 통해 리스트에 중복되는 값이 있는지 확인하는 방법이 있다.
  • 그 외에 고려하거나 생각해내야할 것은 따로 없고 코드로써의 구현이 중요한 문제이다.

def check_sqaure(info) :                    # 사각형 9개 확인
    for x in range(3) :
        for y in range(3) :
            temp = []
            for r in range(3) :             # 각 사각형 안에 들어있는 값들이
                for c in range(3) :
                    temp.append(info[3*x + r][3*y + c])
            if len(set(temp)) != 9 :        # 중복되어있는게 있다면 False
                return False
    return True

def check_row(info) :                       # 9개 행이 맞는지 확인
    for i in range(9) :                     # 하나라도 중복된 값이 있다면 False 반환
        if len(set(info[i])) != 9 :
            return False
    return True

def check_column(info) :                    # 9개 열이 맞는지 확인
    for i in range(9) :
        temp = []
        for r in range(9) :
            temp.append(info[r][i])         # 열마다 데이터를 받아서
        if len(set(temp)) != 9 :            # 중복된 값이 있으면 False
            return False
    return True

t = int(input())
for tc in range(t) :
    able = False
    info = [list(map(int, input().split())) for i in range(9)]
    if check_row(info) and check_column(info) and check_sqaure(info):   
        able = True                         # 셋 중 하나라도 잘못된 값이 들어갈 경우는 False
    print("#{} {}".format(tc+1, int(able)))

'PS > SWEA' 카테고리의 다른 글

[SWEA] 1204.cpp : 최빈수 구하기  (0) 2020.08.30
[SWEA] 1954.py : 달팽이 숫자  (0) 2020.07.27
[SWEA] 1989.py : 초심자의 회문 검사  (0) 2020.07.15
[SWEA] 2001.py : 파리 퇴치  (0) 2020.07.14
[SWEA] 2005.py : 파스칼의 삼각형  (0) 2020.07.13

+ Recent posts