ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90

๐Ÿšฉ ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ๊ตฌํ˜„

* ์‚ผ์„ฑ SW ์—ญ๋Ÿ‰ ํ…Œ์ŠคํŠธ ๊ธฐ์ถœ ๋ฌธ์ œ

 

thinking

"๊ฒฉ์ž์˜ ํ–‰๊ณผ ์—ด์€ 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ๊ณ , 1๋ฒˆ ํ–‰์€ N๋ฒˆ๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ , 1๋ฒˆ ์—ด์€ N๋ฒˆ ์—ด๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค."

๋‚œ ์ด๊ฒŒ ๋ญ”๋ง์ธ๊ฐ€ ํ–ˆ๋‹ค;; ๐Ÿ˜‡

์ด๊ฑฐ์˜€์Œ!!!!!!

๋นจ๊ฐ„๋ณ„์ด ํŒŒ์ด์–ด๋ณผ
ํŒŒ์ด์–ด๋ณผ ๋ฐฉํ–ฅ

์ด๋Ÿฐ ๊ฒฉ์žํŒ์—์„œ ๋ฌธ์ œ์—์„œ ํ•˜๋ผ๋Š”๋ฐ๋กœ๋งŒ ์ˆœ์„œ๋Œ€๋กœ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

์˜ˆ์ œ 1์„ ์˜ˆ์‹œ๋กœ ๋“ค์–ด๋ณด๋ฉด ์ด๋ ‡๋‹ค

 

์˜ˆ์ œ 1

(1,1)ํŒŒ์ด์–ด๋ณผ์€ ์†๋ ฅ์ด 2์ด๋ฏ€๋กœ 2๋ฒˆ ๋ฐฉํ–ฅ์œผ๋กœ ๋‘์นธ๊ฐ€๊ณ , (1,4)ํŒŒ์ด์–ด๋ณผ์€ ์†๋ ฅ์ด 1์ด๋ฏ€๋กœ 6๋ฒˆ ๋ฐฉํ–ฅ์œผ๋กœ 1์นธ ๊ฐ„๋‹ค.

(1,3)์—์„œ ๋‘๊ฐœ ์ด์ƒ์˜ ํŒŒ์ด์–ด๋ณผ์ด ๋งŒ๋‚ฌ์œผ๋ฏ€๋กœ, [2-1] ์กฐ๊ฑด๋Œ€๋กœ ํ•˜๋‚˜์˜ ํŒŒ์ด์–ด๋ณผ๋กœ ํ•ฉ์ณ์ง€๊ณ , [2-2] ์กฐ๊ฑด๋Œ€๋กœ 4๊ฐœ์˜ ํŒŒ์ด์–ด๋ณผ๋กœ ๋‚˜๋ˆ„์–ด์ง„๋‹ค. [2-3] ์กฐ๊ฑด๋Œ€๋กœ ๊ฐ 4๊ฐœ์˜ ํŒŒ์ด์–ด๋ณผ์˜ ์งˆ๋Ÿ‰์€ (5+7) / 5 = 2 ์ด๊ณ , ๋ฐฉํ–ฅ์€ ํ•ฉ์ณ์ง€๋Š” ํŒŒ์ด์–ด๋ณผ ๋ฐฉํ–ฅ์ด 2, 6 ์œผ๋กœ ๋ชจ๋‘ ์ง์ˆ˜์ด๋ฏ€๋กœ 0,2,4,6 ์ด ๋œ๋‹ค.

 

 

์ฝ”๋“œ

N, M, K = map(int, input().split())
fireballs = []
for _ in range(M):
    _r, _c, _m, _s, _d = list(map(int, input().split()))
    fireballs.append([_r-1, _c-1, _m, _s, _d])

MAP = [[[] for _ in range(N)] for _ in range(N)]

dx = [-1, -1, 0, 1, 1, 1, 0, -1]
dy = [0, 1, 1, 1, 0, -1, -1, -1]

for _ in range(K):
    # ํŒŒ์ด์–ด๋ณผ ์ด๋™
    while fireballs:
        cr, cc, cm, cs, cd = fireballs.pop(0)
        nr = (cr + cs * dx[cd]) % N  # 1๋ฒˆ-N๋ฒˆ ํ–‰ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ
        nc = (cc + cs * dy[cd]) % N
        MAP[nr][nc].append([cm, cs, cd])

    # 2๊ฐœ ์ด์ƒ์ธ์ง€ ์ฒดํฌ
    for r in range(N):
        for c in range(N):
            # 2๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ -> 4๊ฐœ์˜ ํŒŒ์ด์–ด๋ณผ๋กœ ์ชผ๊ฐœ๊ธฐ
            if len(MAP[r][c]) > 1:
                sum_m, sum_s, cnt_odd, cnt_even, cnt = 0, 0, 0, 0, len(MAP[r][c])
                while MAP[r][c]:
                    _m, _s, _d = MAP[r][c].pop(0)
                    sum_m += _m
                    sum_s += _s
                    if _d % 2:
                        cnt_odd += 1
                    else:
                        cnt_even += 1
                if cnt_odd == cnt or cnt_even == cnt:  # ๋ชจ๋‘ ํ™€์ˆ˜์ด๊ฑฐ๋‚˜ ๋ชจ๋‘ ์ง์ˆ˜์ธ ๊ฒฝ์šฐ
                    nd = [0, 2, 4, 6]
                else:
                    nd = [1, 3, 5, 7]
                if sum_m//5:  # ์งˆ๋Ÿ‰ 0์ด๋ฉด ์†Œ๋ฉธ
                    for d in nd:
                        fireballs.append([r, c, sum_m//5, sum_s//cnt, d])

            # 1๊ฐœ์ธ ๊ฒฝ์šฐ
            if len(MAP[r][c]) == 1:
                fireballs.append([r, c] + MAP[r][c].pop())

print(sum([f[2] for f in fireballs]))
๋Œ“๊ธ€