SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
T = int(input())
for tc in range(1, T + 1):
N, M = map(int, input().split())
arr = [[0] * (N + 1) for _ in range(N + 1)] # 보드 빈자리 0으로 채우기
m = N // 2
arr[m][m] = arr[m + 1][m + 1] = 2 # 처음 세팅
arr[m][m + 1] = arr[m + 1][m] = 1
for _ in range(M):
si, sj, color = map(int, input().split())
arr[si][sj] = color # 맨처음 배치
for di, dj in ((1, 0), (0, 1), (-1, 0), (0, -1), (1, -1), (1, 1), (-1, -1), (-1, 1)):
rst = []
for k in range(1, N):
ni, nj = si + di * k, sj + dj * k
if 1 <= ni <= N and 1 <= nj <= N:
if arr[ni][nj] == 0: # 쭉 탐색하다 0이 나오면 정지
break
elif arr[ni][nj] == color: # 본인색이 나오면
while rst: # 사이에 상대색이 있으면? 모두 본인색이 될 때까지
ti, tj = rst.pop() # 그걸 빼고
arr[ti][tj] = color # 본인색으로 바꾸기
break
else:
rst.append((ni, nj)) # 상대색이 나오면 rst에 저장
else:
break
black = 0
white = 0
for lst in arr: # 전체에서 해당 색 각각 카운트
black += lst.count(1)
white += lst.count(2)
print(f'#{tc} {black} {white}')
'swea' 카테고리의 다른 글
2117. [모의 SW 역량테스트] 홈 방범 서비스 (0) | 2023.08.28 |
---|---|
4408. 자기 방으로 돌아가기 (0) | 2023.08.28 |
5356. 의석이의 세로로 말해요 (0) | 2023.08.28 |
6190. 정곤이의 단조 증가하는 수 (0) | 2023.08.28 |
3499. 퍼펙트 셔플 (0) | 2023.08.28 |