• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

스토쿠 검사

23.04.06 03:27 작성 조회수 247

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번 직접 적은 것 같네요. 저는 영상의 방법을 추천합니다. 위에 코드는 코드라인이 너무 많습니다. 코딩인터뷰 같은데서 위에처럼 짜는 것 보다는 영상처럼 규칙을 발견에 코드라인을 줄여 짜는게 더 좋다고 생각합니다.

답변 감사합니다!

조언 감사합니다!