- 문제 : 재미있는 오셀로 게임
- 난이도 : D3
- 언어 : Python
- 문제 링크 : https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWQmA4uK8ygDFAXj&categoryId=AWQmA4uK8ygDFAXj&categoryType=CODE&problemTitle=%EC%98%A4%EC%85%80%EB%A1%9C&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1&&&&&&&&&
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 |