728x90
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXaSUPYqPYMDFASQ
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
< 📝 문제 >
N X N 크기의 판이 있다. 판의 각 칸에는 돌이 있거나 없을 수 있다. 돌이 가로, 세로, 대각선 중 하나의 방향으로 다섯 개
이상 연속한 부분이 있는지 없는지 판정하는 프로그램을 작성하라.
< ❓ 생각 >
< 💻 코드 >
# '.' : 돌이 없는 칸, 'o' : 돌이 있는 칸
# 오른쪽, 오른쪽아래대각선, 아래쪽, 왼쪽아래대각선으로 연속 5개나와야함
# arr에 오목이 존재하면 'YES', 존재하지 않으면 'NO' return
def A(arr):
# 우,하,우하대,좌하대
dr = [0,1,1,1]
dc = [1,0,1,-1]
for start_r in range(N):
for start_c in range(N):
if arr[start_r][start_c] == 'o':
for d in range(4):
r = start_r
c = start_c
# 각 방향으로 연속적으로 오목이 존재하는가?
cnt = 0
# 파이썬만 0 <= r <= N-1 허용
# 다른 언어는 r >= 0 and r <= N-1
while 0 <= r <= N-1 and 0 <= c <= N-1 and arr[r][c] == 'o':
cnt += 1
r += dr[d]
c += dc[d]
# 각 방향으로 오목이 존재?하는가
if cnt >= 5:
return 'YES'
return 'NO'
# 테스트 케이스의 개수
T = int(input())
for tc in range(1,T+1):
# N*N 크기의 판
N = int(input())
arr = [input() for _ in range(N)]
print(f'#{tc} {A(arr)}')
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[SWEA] 1225. 암호생성기 - Python (0) | 2022.02.25 |
---|---|
[SWEA] 3499. 퍼펙트 셔플 - Python (0) | 2022.02.24 |
[SWEA] 1220. Magnetic - Python (0) | 2022.02.24 |
[SWEA] 1223. 계산기2 - Python (0) | 2022.02.23 |
[SWEA] 2005. 파스칼의 삼각형 - Python (0) | 2022.02.22 |
댓글