[SW11315] 오목 판정
✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺/SW Expert Academy

[SW11315] 오목 판정

 

 SW Expert Academy- 오목 판정 

문제 링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AXaSUPYqPYMDFASQ&categoryId=AXaSUPYqPYMDFASQ&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=3&pageSize=10&pageIndex=2 

 

SW Expert Academy

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

swexpertacademy.com

 

문제 입력

예제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] 테트로미노

 

[BJ14500] 테트로미노

🚩 문제 설명 https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치

yeomss.tistory.com

 

 

 

 

 

 

 

 

 

# SW Expert 오목판정 python 파이썬 풀이


 

728x90