본문 바로가기
Problem Solving/SWEA

[SWEA|파이썬] 11315. 오목 판정 (D3)

by 청량리 물냉면 2023. 5. 16.
반응형
문제

https://tinyurl.com/2o9nbr4g

 

SW Expert Academy

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

swexpertacademy.com

 

 

🐍파이썬
더보기

❌ Fail Code

T = int(input())
for test_case in range(1, T+1):
    n = int(input())
    arr = []
    ans = "NO"
    for _ in range(n):
        a = input()
        if a.count("ooooo"):
            ans = "YES"
        else:
            arr.append(a)
    if ans == "NO":
        d_str = ''  #대각선문자열
        d_str2 = [[] for _ in range((n-1)*2)]
        for i in range(n):
            str = ''    #세로문자열
            for j in range(n):
                str += arr[j][i]
                if i==j:
                    d_str += arr[i][j]
                if str.count("ooooo") or d_str.count("ooooo"):
                    ans = "YES"
                    break
                for k in range(4, (n-1)*2):
                    if i+j == k:
                        d_str2[k] += arr[i][j]
                    if ''.join(d_str2[k]).count("ooooo"):
                        ans = "YES"
                        break
            if ans == "YES":
                break
    print("#{} {}".format(test_case, ans))

96개 통과

왼쪽->오른쪽 대각선 처리 실패

def search(arr):
    #오른쪽, 아래, 왼쪽대각선, 오른쪽대각선
    dx = [1, 0, 1, 1]
    dy = [0, 1, -1, 1]
    for i in range(n):
        for j in range(n):
            if arr[i][j] == "o":    #"o"이 나오면
                for k in range(4):  #네 방향 search
                    x = i
                    y = j
                    cnt = 0
                    #index범위 벗어나지 않고 "o"이 연이어 나오는 한 계속 카운트
                    while 0 <= x <= n-1 and 0 <= y <= n-1 and arr[x][y]=="o":
                        cnt += 1
                        x += dx[k]  #한쪽방향으로 계속 이동
                        y += dy[k]
                        if cnt == 5:    #cnt가 5가 되었다면 오목완성이므로 "YES"리턴
                            return "YES"
    return "NO"
T = int(input())
for test_case in range(1, T+1):
    n = int(input())
    arr = []
    for _ in range(n):
        arr.append(input())
    print("#{} {}".format(test_case, search(arr)))

 

 

풀이참고

https://chaemi720.tistory.com/49

 

[SWEA] 11315. 오목 판정 - Python

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXaSUPYqPYMDFASQ SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com N X N 크기의 판이

chaemi720.tistory.com

 

반응형