1. 해결방법
완전 탐색 방법으로 해결하였다.
40분 정도 걸렸다.
본인은 오목 판에서 2중 for문으로 좌측 위쪽 부터 우측 아래까지 탐색할 것이기에 <오른쪽, 아래, 왼쪽 대각선, 오른쪽 대각선> 방향만 탐색하도록 하였다. (나머지는 의미 없음)
1. 2중 for문으로 'o'을 먼저 찾는다.
2. direct 방향의 초기값을 세팅해두고, 방향을 for문 돌려서 해당 방향에 오목이 얼마나 연결되어 있는지 확인한다.
3. 확인은 while문으로 하였고, 연결되어있을 때마다 count + 1을 해주었다.
2. 정답코드
T = int(input())
# T = 1
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
N = int(input())
maps = [list(map(str, input().strip())) for _ in range(N)]
chk = [[False] * N for _ in range(N)]
direct = ((0, 1), (1, 0), (1, 1), (1, -1))
flag = False
for i in range(N):
for j in range(N):
if maps[i][j] == 'o':
for k in range(4):
count = 1
dy, dx = direct[k]
ny, nx = i + dy, j + dx
while True:
if 0 <= ny < N and 0 <= nx < N:
if maps[ny][nx] == 'o':
count += 1
ny, nx = ny + dy, nx + dx
else:
break
if count == 5:
flag = True
break
else:
break
if flag == True:
break
if flag == True:
break
if flag == True:
break
if flag:
print(f"#{test_case} YES")
else:
print(f"#{test_case} NO")
'Algorithm > SWEA' 카테고리의 다른 글
[SWEA] D.3 0/1 Knapsack (0) | 2022.11.19 |
---|---|
[SWEA] D3. 정곤이의 단조 증가하는 수 (0) | 2022.11.18 |
[SWEA] D3. 최장 증가 부분 수열 (0) | 2022.11.17 |
[SWEA] D3. 재미있는 오셀로 게임 (0) | 2022.11.14 |
[SWEA] D3. 상호의 배틀필드 (1) | 2022.11.14 |