본문 바로가기

스터디 1일 1커밋

240222 [swea] 11315. 오목판정

SW Expert Academy

 

SW Expert Academy

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

swexpertacademy.com


나의 코드

T = int(input())
for t in range(T):
    N = int(input())
    data = [list(input()) for _ in range(N)]
    # print(data)

    ans = 'NO'
    count = 0

    for i in range(N):
        for j in range(N):
            if data[i][j] == 'o':  #가로줄탐색
                count += 1

                if count == 5:
                    ans = 'YES'
                    break

            if data[j][i] == 'o':  #세로줄탐색
                count += 1
                if count == 5:
                    ans = 'YES'
                    break

            if data[j][j] == 'o':  #오른쪽아래로 내려가는 대각선 탐색
                count += 1
                if count == 5:
                    ans = 'YES'
                    break

            if data[j][-j-1] == 'o': #왼쪽아래로 내려가는 대각선 탐색
                count += 1
                if count == 5:
                    ans = 'YES'
                    break

            else:                   #x를 만날경우 다시 초기화
                count = 0

    print(f'#{t+1} {ans}')

 

결과

100개중 69개 맞음


출력은 맞는데 다른 반례들을 생각해봐야될 것 같다. 사실 반례를 아는데 어떻게 구현하는지는 모르겠다...ㅎㅎㅎ

방금 방향벡터 생각하고 풀이방법 찾아봤는데 방향벡터로 하는 게 맞나보다. 내가 한 방법이랑 아예 달라서 일단 여기까지만 하고 마치겠다.