SWEA

SWEA 4615. 재미있는 오셀로 게임 [Python]

Hoo_Dev 2022. 3. 27. 00:33
def check(y, x):
    for dy, dx in [(1, 0), (-1, 0), (0, 1), (0, -1), (1, 1), (1, -1), (-1, 1), (-1, -1)]:
        lst_yx = []
        for k in range(1, N):
            ny, nx = y + dy * k, x + dx * k
            if 0 <= ny < N and 0 <= nx < N:
                if arr[ny][nx] == 0:
                    break
 
                elif arr[ny][nx] == dol:
                    for _ in range(len(lst_yx)):
                        cy, cx = lst_yx.pop()
                        arr[cy][cx] = dol
                    break
 
                elif arr[ny][nx] != dol:
                    lst_yx.append((ny, nx))
            else:
                break
 
T = int(input())
for tc in range(1, T + 1):
    N, M = map(int, input().split())
    arr = [[0] * N for _ in range(N)]
    arr[N // 2 - 1][N // 2] = 1
    arr[N // 2][N // 2 - 1] = 1
    arr[N // 2][N // 2] = 2
    arr[N // 2 - 1][N // 2 - 1] = 2
 
    for _ in range(M):
        j, i, dol = map(int, input().split())
        arr[i - 1][j - 1] = dol
        check(i-1, j-1)
 
    b, w = 0, 0
    for y in range(N):
        for x in range(N):
            if arr[y][x] == 1:
                b += 1
            elif arr[y][x] == 2:
                w += 1
 
    print('#{} {} {}'.format(tc, b, w))

처음에 입력을 i, j (세로, 가로)로 받았는데 문제를 다시 읽으니 j, i 순서로 받았어야 했다..

그리고 마지막 출력에 else: 로 풀었더니 테케 2개가 오류.. elif arr[y][x] == 2: 로 수정하니 pass했다. (아마 일부 테케가 0이 남아있어서 0이 흰돌에 합쳐져서 출력된 걸로 예상..)

'SWEA' 카테고리의 다른 글

SWEA 5250. 최소비용 [Python]  (0) 2022.04.05
SWEA 1486. 장훈이의 높은 선반 [Python]  (0) 2022.03.27
SWEA 2382. 미생물 격리 [Python]  (0) 2022.03.25
SWEA 1861. 정사각형방 [Python]  (0) 2022.03.24
SWEA 1238. Contact [Python]  (0) 2022.03.24