SW Expert Academy- 오목 판정
문제 링크
문제 입력
예제1
4
5
....o
...o.
..o..
.o...
o....
5
...o.
ooooo
...o.
...o.
.....
5
.o.oo
oo.oo
.oo..
.o...
.o...
5
.o.o.
o.o.o
.o.o.
o.o.o
.o.o.
#1 YES
#2 YES
#3 YES
#4 NO
예제2
2
6
o.....
oo....
.oo...
..oo..
...oo.
....o.
6
.....o
....oo
...oo.
..oo..
.oo...
.o....
#1 YES
#2 YES
문제 풀이
import sys
sys.stdin = open('input.txt', 'rt')
T = int(input())
for t in range(T):
n = int(input())
mp = [input() for _ in range(n)]
flag = 'NO'
# 가로
for i in range(n):
check = ""
for j in range(n - 4):
check = mp[i][j] + mp[i][j + 1] \
+ mp[i][j + 2] + mp[i][j + 3] + mp[i][j + 4]
if check.count('o') >= 5:
flag = "YES"
break
# 세로
for i in range(n - 4):
check = ""
for j in range(n):
check = mp[i][j] + mp[i + 1][j] \
+ mp[i + 2][j] + mp[i + 3][j] + mp[i + 4][j]
if check.count('o') >= 5:
flag = "YES"
break
# 대각선
for i in range(n - 4):
check1, check2 = "", ""
for j in range(n - 4):
check1 = mp[i][j] + mp[i + 1][j + 1] \
+ mp[i + 2][j + 2] + mp[i + 3][j + 3] + mp[i + 4][j + 4]
check2 = mp[i][n - j - 1] + mp[i + 1][n - 2 - j] \
+ mp[i + 2][n - 3 - j] + mp[i + 3][n - 4 - j] + mp[i + 4][n - 5 - j]
if any([check1.count('o') >= 5, check2.count('o') >= 5]):
flag = "YES"
break
print(f"#{t + 1} {flag}")
반복문을 돌아 모양대로 한번에 잡아 check 합니다.
참고하면 좋을 문제 ▼
2022.04.30 - [✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺/백준 알고리즘] - [BJ14500] 테트로미노
# SW Expert 오목판정 python 파이썬 풀이
728x90
'✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺 > SW Expert Academy' 카테고리의 다른 글
[SW13732] 정사각형 판정 (0) | 2022.05.29 |
---|---|
[SW11285] 다트 게임 (0) | 2022.05.24 |
[SW11387] 몬스터 사냥 (0) | 2022.05.23 |
[SW11445] 무한 사전 (0) | 2022.05.23 |
[SW1859] 백만장자 프로젝트 (0) | 2022.05.23 |