강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

이성길님의 프로필 이미지
이성길

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

10. 스토쿠 검사

질문있습니다.

작성

·

168

0

선생님 강의를 잘 보고 배워나가고 있습니다. 

list말고 set의 특성을 사용해서 짜보았는데  가능한지 그리고 가능한데 현재 돌아 가지 않는데 틀린 부분이 무엇 인지 궁금합니다.

N=[list(map(int,input().split())for _ in range(9))]
a,b={},{}
for i in range(9):
    for j in range(9):
        a.add(N[i][j])
        b.add(N[j][i])
    if(len(a)!=9):
        print('NO')
        break
    if(len(a)==9):
        a={}
    if(len(b)!=9):
        print('NO')
        break
    if(len(b)==9):
        b={}
       
for x in range(0,6,3):        
    for y in range(x,x+3):
        for z in range(x,x+3):
            a.add(N[y][z])
    if(len(a)!=9):
        print('NO')
        break
    if(len(a)==9):
        a={}
if(len(a)==0):
    print('YES')

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

1. a={} 와 같이 선언하면 set 자료구조가 아니라 딕셔너리입니다. set은 a=set() 이렇게 선언해야 합니다.

2. 입력을 이차원 리스트로 읽을 때는 N=[list(map(int,input().split()))for _ in range(9)] 

     list 함수의 괄호를 for문 전에 닫아주어야 2차원 리스트로 읽습니다. 

위 두 가지를 고쳐야 일단 에러가 나지 않습니다. 그 다음 100점이 나오지 않는 논리적인 것은 스스로 디버그하면서 고쳐보세요.

이성길님의 프로필 이미지
이성길

작성한 질문수

질문하기