Post
11315. 오목 판정 (SWEA) | Gihun Son

11315. 오목 판정 (SWEA)

※ SW expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.

출처:

SW Expert Academy

나의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
T = int(input())
dr=[1,1,0,1]
dc=[0,1,1,-1]
for test_case in range(1, T + 1):
    N=int(input())
    board=[]
    cnt=0
    for _ in range(N):
        board.append(list(input()))
    for i in range(N):
        for j in range(N):
            if board[i][j]=='o':
                for d in range(4):
                    cnt=0
                    nr=i
                    nc=j
                    while 0<=nr<N and 0<=nc<N and board[nr][nc]=='o':
                        nr+=dr[d]
                        nc+=dc[d]
                        cnt+=1
                    if cnt>4:
                        break
            if cnt>4:
                break
        if cnt>4:
            break
    if cnt>4:
        print(f'#{test_case} YES')
    else:
        print(f'#{test_case} NO')
  • 판 위에 ‘o’이 있다면, 해당 지점부터 4개의 방향에 대해 연속하는 바둑돌 수를 계산한다.
  • 그 수가 5 이상이라면 멈추고 YES를 출력한다.
This post is licensed under CC BY 4.0 by the author.