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

Jiyoung Kang님의 프로필 이미지
Jiyoung Kang

작성한 질문수

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

10. 스토쿠 검사

스토쿠 검사

해결된 질문

작성

·

297

0

input_list = [list(map(int, input().split())) for _ in range(9)]

# 행 체크
for i in range(9):
    temp = []
    for j in range(9):
        temp.append(input_list[i][j])

    if len(set(temp)) != 9:
        print("NO")
        exit()

# 열 체크
for i in range(9):
    temp = []
    for j in range(9):
        temp.append((input_list[j][i]))

    if len(set(temp)) != 9:
        print("NO")
        exit()

# 블럭 단위 체크 9번
temp = []
for i in range(3):
    for j in range(3):
        temp.append((input_list[i][j]))

if len(set(temp)) != 9:
    print("NO")
    exit()

temp = []
for i in range(3):
    for j in range(3, 6):
        temp.append((input_list[i][j]))

if len(set(temp)) != 9:
    print("NO")
    exit()

temp = []
for i in range(3):
    for j in range(6, 9):
        temp.append((input_list[i][j]))

if len(set(temp)) != 9:
    print("NO")
    exit()

temp = []
for i in range(3, 6):
    for j in range(3):
        temp.append((input_list[i][j]))

if len(set(temp)) != 9:
    print("NO")
    exit()

temp = []
for i in range(3, 6):
    for j in range(3, 6):
        temp.append((input_list[i][j]))

if len(set(temp)) != 9:
    print("NO")
    exit()

temp = []
for i in range(3, 6):
    for j in range(6, 9):
        temp.append((input_list[i][j]))

if len(set(temp)) != 9:
    print("NO")
    exit()

temp = []
for i in range(6, 9):
    for j in range(3):
        temp.append((input_list[i][j]))

if len(set(temp)) != 9:
    print("NO")
    exit()

temp = []
for i in range(6, 9):
    for j in range(3, 6):
        temp.append((input_list[i][j]))

if len(set(temp)) != 9:
    print("NO")
    exit()

temp = []
for i in range(6, 9):
    for j in range(6, 9):
        temp.append((input_list[i][j]))

if len(set(temp)) != 9:
    print("NO")
    exit()

print("YES")

 

이런 식으로 이중 for문으로 모두 처리하는 것은 좋은 풀이가 아닐까요?

강사님 풀이가 훨씬 깔끔하긴 한데, 4중 for문 시간복잡도와 제 풀이 중 어느게 더 빠른지 궁금합니다.

 

 

답변 1

0

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

안녕하세요^^

효율성은 같은 것 같습니다. 영상의 4중 for도 결국 3*3을 9번 한 것입니다. 위에 코드도 3*3을 9번 직접 적은 것 같네요. 저는 영상의 방법을 추천합니다. 위에 코드는 코드라인이 너무 많습니다. 코딩인터뷰 같은데서 위에처럼 짜는 것 보다는 영상처럼 규칙을 발견에 코드라인을 줄여 짜는게 더 좋다고 생각합니다.

Jiyoung Kang님의 프로필 이미지
Jiyoung Kang
질문자

답변 감사합니다!

조언 감사합니다!

Jiyoung Kang님의 프로필 이미지
Jiyoung Kang

작성한 질문수

질문하기