SWEA
[python] 5648. 원자 소멸 시뮬레이션
DylanMsK
2019. 9. 6. 19:53
문제 출처
풀이
tc = int(input())
for _ in range(tc):
n = int(input())
atoms = []
mt, mr, mb, ml = 0, 0, 0, 0
for i in range(n):
x, y, d, e = map(int, input().split())
if x > mr:
mr = x
if x < ml:
ml = x
if y > mt:
mt = y
if y < mb:
mb = y
atoms.append([x*2, y*2, d, e])
mt *= 2
mr *= 2
mb *= 2
ml *= 2
direction = {0: (0, 1), 1: (0, -1), 2: (-1, 0), 3: (1, 0)}
answer = 0
while atoms:
cnt = len(atoms)-1
collapse = {}
while cnt >= 0:
x, y, d, e = atoms[cnt]
nx, ny = x+direction[d][0], y+direction[d][1]
if not ml <= nx <= mr or not mb <= ny <= mt:
atoms.pop(cnt)
else:
loc = '{} {}'.format(nx, ny)
atoms[cnt] = [nx, ny, d, e]
if collapse.get(loc):
collapse[loc].append(atoms[cnt])
else:
collapse[loc] = [atoms[cnt]]
cnt -= 1
for col in collapse:
if len(collapse[col]) > 1:
print(collapse[col])
for i in collapse[col]:
atoms.remove(i)
answer += i[3]
print('#{} {}'.format(_+1, answer))