DevYoon
[SWEA] 2382. ๋ฏธ์๋ฌผ ๊ฒฉ๋ฆฌ (Python) ๋ณธ๋ฌธ
link ๐ https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV597vbqAH0DFAVl
t = int(input())
for tc in range(1, t+1):
N, M, K = map(int, input().split()) # ์
์ ๊ฐ์, ๊ฒฉ๋ฆฌ ์๊ฐ, ๊ตฐ์ง์ ๊ฐ์
misaeng = [list(map(int, input().split())) for _ in range(K)] # ์ธ๋ก, ๊ฐ๋ก, ๋ฏธ์๋ฌผ ์, ์ด๋๋ฐฉํฅ
direct = [(-1, 0), (1, 0), (0, -1), (0, 1)] # ์ ํ ์ข ์ฐ
modi_dir = []
ret = 0
for _ in range(M):
for m in misaeng:
# ๋ฏธ์๋ฌผ ์ด๋, ๊ฒฝ๊ณ์ฒ๋ฆฌ
m[0] = m[0]+direct[m[3]-1][0] # ์ธ๋ก ์ด๋
m[1] = m[1]+direct[m[3]-1][1] # ๊ฐ๋ก ์ด๋
if m[0] == 0 or m[0] == N-1 or m[1] == 0 or m[1] == N-1: # ์ฝํ์ด ๋ฐ๋ผ์ ธ ์๋ ๊ณณ์ ๋ค๋ค๋ฅด๋ฉด
m[2] //= 2
if m[3] % 2 == 1:
m[3] += 1 # ๋ฐฉํฅ์ด ํ์๋ฉด 1 ๋ํด์ฃผ๊ณ
else:
m[3] -= 1 # ๋ฐฉํฅ์ด ์ง์๋ฉด 1์ ๋นผ์ฃผ๋ฉด ๋ฐ๋ ๋ฐฉํฅ์ด ๋๋ค
# ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ ํ ๊ฐ์ ์ขํ์ ์๋ค๋ฉด ๋ณํฉ
misaeng.sort(key=lambda x:(x[0], x[1], x[2]), reverse=True) # ์ธ๋ก, ๊ฐ๋ก, ๋ฏธ์๋ฌผ ์์๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
idx = 1
while idx < len(misaeng):
if misaeng[idx-1][0] == misaeng[idx][0] and misaeng[idx-1][1] == misaeng[idx][1]: # y, x ์ขํ๊ฐ ๊ฐ์ผ๋ฉด
misaeng[idx-1][2] += misaeng[idx][2] # ์์ ๋ฏธ์๋ฌผ ์์(๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ์ผ๋๊น ๋ ํผ) ํ์ฌ ๋ฏธ์๋ฌผ ์ ๋ํด์ฃผ๊ณ
misaeng.pop(idx) # ํ์ฌ ๊ตฐ์ง ์ญ์
else: # ์ขํ ๊ฐ์ง ์์ผ๋ฉด idx 1 ๋ํด์ฃผ๊ธฐ
idx += 1
for s in misaeng: # ๋จ์ ๋ฏธ์๋ฌผ ์ ๋ชจ๋ ๋ํด์ฃผ๊ธฐ
ret += s[2]
print(f'#{tc} {ret}')
๐ฅ ์ฃผ์
- ๋ฏธ์๋ฌผ๋ค ํ ๋ฒ์ฉ ์ด๋์ํจ ๋ค์ ์ ๋ ฌ → ๊ฐ์ ๊ฐ ๋ณํฉํ์ด์ผ ํ๋๋ฐ, ์ด๋ํ ๋๋ง๋ค ์ ๋ ฌํด์ ๊ฐ์ ๊ฐ ๋ณํฉํ๊ณ ์์๋ค...ใ ใ ์ด์ฉ์ง ๋ญ๊ฐ ์ด์ํ๋๋ผ๋
- ์ผ์์ใ ใ ์๊ณ ๋ฆฌ์ฆ ์ํ๊ณ ์ถ๋คใ ใ ใ