SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
나의 코드
def omok(data):
for si in range(N):
for sj in range(N):
if data[si][sj] == 'o': # 처음값이 o일 때
for k in range(4):
count = 0
i = si
j = sj
while 0 <= i < N and 0 <= j < N and data[i][j] == 'o':
count += 1
i = i + di[k]
j = j + dj[k]
if count >= 5:
return 'YES'
return 'NO'
T = int(input())
for t in range(T):
N = int(input())
arr = [list(input()) for _ in range(N)]
di = [0, 1, 1, 1] # 우,하,우하,우좌로 방향설정
dj = [1, 0, 1, -1]
print(f'#{t+1} {omok(arr)}')
결과

처음에 델타를 쓰지 않고 직접 가로, 세로, 대각선을 for문을 돌리며 오목판정을 했다. 주어진 테스트케이스는 맞았지만 대각선을 확인하며 N이 5가 아닐 때는 대각선의 주변부도 확인해야 한다는 것을 알았다. 알지만 구현은 못했다...ㅜㅜ
그래서 델타를 써서 먼저 주어진 arr값이 o인 곳을 시작으로 다음에도 o가 있는곳으로 계속 가면서 카운팅을 해 5개 이상이 된다면 YES가 나오게끔 했다. 오목판정.. 잊지 못할 것 같다 지금까지 문제해결에 제일 오래 걸린 것 같다.
'스터디 1일 1커밋' 카테고리의 다른 글
| 240301 [BOJ/백준] 2468. 안전 영역 (+수정) (0) | 2024.03.01 |
|---|---|
| 240229 [SWEA] 배열_3분할 (0) | 2024.03.01 |
| 240227 [SWEA] 2805. 농작물 수확하기 (1) | 2024.02.28 |
| 240226 [BOJ/백준] 15650. N과 M (2) (1) | 2024.02.27 |
| 240225 [BOJ/백준] 24482. 알고리즘 수업- 깊이 우선 탐색 4 (1) | 2024.02.25 |