[BOJ][๐ก3][๋ฐฑ์ค#20057] ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold III
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
๋ง๋ฒ์ฌ ์์ด๊ฐ ํ ๋ค์ด๋๋ฅผ ๋ฐฐ์ ๊ณ , ์ค๋์ ํ ๋ค์ด๋๋ฅผ ํฌ๊ธฐ๊ฐย NรN์ธ ๊ฒฉ์๋ก ๋๋์ด์ง ๋ชจ๋๋ฐญ์์ ์ฐ์ตํ๋ ค๊ณ ํ๋ค. ์์น (r,ย c)๋ ๊ฒฉ์์ rํ c์ด์ ์๋ฏธํ๊ณ , A[r][c]๋ (r, c)์ ์๋ ๋ชจ๋์ ์์ ์๋ฏธํ๋ค. ํ ๋ค์ด๋๋ฅผย ์์ ํ๋ฉด ๊ฒฉ์์ ๊ฐ์ด๋ฐ ์นธ๋ถํฐ ํ ๋ค์ด๋์ ์ด๋์ด ์์๋๋ค.ย ํ ๋ค์ด๋๋ ํ ๋ฒ์ ํ ์นธ ์ด๋ํ๋ค. ๋ค์์ N = 7์ธ ๊ฒฝ์ฐ ํ ๋ค์ด๋์ ์ด๋์ด๋ค.
ํ ๋ค์ด๋๊ฐ ํ ์นธ ์ด๋ํ ๋๋ง๋ค ๋ชจ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ ํ ๋น์จ๋ก ํฉ๋ ๋ฆฌ๊ฒ ๋๋ค.
ํ ๋ค์ด๋๊ฐ x์์ y๋ก ์ด๋ํ๋ฉด, y์ ๋ชจ๋ ๋ชจ๋๊ฐ ๋น์จ๊ณผ ฮฑ๊ฐ ์ ํ์๋ ์นธ์ผ๋ก ์ด๋ํ๋ค. ๋น์จ์ด ์ ํ์๋ ์นธ์ผ๋ก ์ด๋ํ๋ ๋ชจ๋์ ์์ y์ ์๋ ๋ชจ๋์ย ํด๋น ๋น์จ๋งํผ์ด๊ณ , ๊ณ์ฐ์์ ์์์ ์๋๋ ๋ฒ๋ฆฐ๋ค. ฮฑ๋ก ์ด๋ํ๋ ๋ชจ๋์ ์์ ๋น์จ์ด ์ ํ์๋ ์นธ์ผ๋ก ์ด๋ํ์ง ์์ ๋จ์ ๋ชจ๋์ ์๊ณผ ๊ฐ๋ค. ๋ชจ๋๊ฐ ์ด๋ฏธ ์๋ ์นธ์ผ๋ก ๋ชจ๋๊ฐ ์ด๋ํ๋ฉด, ๋ชจ๋์ ์์ ๋ํด์ง๋ค. ์์ ๊ทธ๋ฆผ์ ํ ๋ค์ด๋๊ฐ ์ผ์ชฝ์ผ๋ก ์ด๋ํ ๋์ด๊ณ , ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ๋ ์์ ๊ทธ๋ฆผ์ ํด๋น ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ฉด ๋๋ค. ํ ๋ค์ด๋๋ (1, 1)๊น์ง ์ด๋ํ ๋ค ์๋ฉธํ๋ค.ย ๋ชจ๋๊ฐ ๊ฒฉ์์ ๋ฐ์ผ๋ก ์ด๋ํ ์๋ ์๋ค. ํ ๋ค์ด๋๊ฐ ์๋ฉธ๋์์ย ๋, ๊ฒฉ์์ ๋ฐ์ผ๋ก ๋๊ฐ ๋ชจ๋์ ์์ ๊ตฌํด๋ณด์.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๊ฒฉ์์ ํฌ๊ธฐ N์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ๊ฒฉ์์ ๊ฐ ์นธ์ ์๋ ๋ชจ๋๊ฐ ์ฃผ์ด์ง๋ค. r๋ฒ์งธ ์ค์์ c๋ฒ์งธ ์ฃผ์ด์ง๋ ์ ์๋ย A[r][c] ์ด๋ค.
์ถ๋ ฅ
๊ฒฉ์์ ๋ฐ์ผ๋ก ๋๊ฐ ๋ชจ๋์ ์์ ์ถ๋ ฅํ๋ค.
์ ํ
3 โค N โค 499 N์ ํ์ 0 โค A[r][c] โค 1,000 ๊ฐ์ด๋ฐ ์นธ์ ์๋ ๋ชจ๋์ ์์ 0
์์
์์ 1
์ ๋ ฅ
5
0 0 0 0 0
0 0 0 0 0
0 10 0 0 0
0 0 0 0 0
0 0 0 0 0
์ถ๋ ฅ
10
์์ 2
์ ๋ ฅ
5
0 0 0 0 0
0 0 0 0 0
0 100 0 0 0
0 0 0 0 0
0 0 0 0 0
์ถ๋ ฅ
85
์์ 3
์ ๋ ฅ
7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 0 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7
์ถ๋ ฅ
139
์์ 4
์ ๋ ฅ
5
100 200 300 400 200
300 243 432 334 555
999 111 0 999 333
888 777 222 333 900
100 200 300 400 500
์ถ๋ ฅ
7501
์์ 5
์ ๋ ฅ
5
0 0 100 0 0
0 0 100 0 0
0 0 0 0 0
0 0 100 0 0
0 0 100 0 0
์ถ๋ ฅ
283
์์ 6
์ ๋ ฅ
9
193 483 223 482 858 274 847 283 748
484 273 585 868 271 444 584 293 858
828 384 382 818 347 858 293 999 727
818 384 727 373 636 141 234 589 991
913 564 555 827 0 999 123 123 123
321 321 321 983 982 981 983 980 990
908 105 270 173 147 148 850 992 113
943 923 982 981 223 131 222 913 562
752 572 719 590 551 179 141 137 731
์ถ๋ ฅ
22961
My Sol
import sys
input = sys.stdin.readline
def move_line():
global ci, cj, direction, try_cnt
for _ in range((try_cnt + 2) // 2):
di, dj = direction[try_cnt % 4]
move_one(di, dj)
ci += di
cj += dj
try_cnt += 1
def move_one(di, dj):
global ci, cj, try_cnt, direction, mat
if ci == cj == 0: return
stdi, stdj = ci+di, cj+dj
stdv = mat[stdi][stdj]
mat[stdi][stdj] = 0
p1 = int(stdv*0.01)
p2 = int(stdv*0.02)
p5 = int(stdv*0.05)
p7 = int(stdv*0.07)
p10 = int(stdv*0.10)
last = stdv - 2*(p1+p2+p7+p10) - p5
# ์์๋ ์ด๋
if try_cnt%2:
check(stdi, stdj+1, p7)
check(stdi, stdj-1, p7)
check(stdi, stdj+2, p2)
check(stdi, stdj-2, p2)
check(stdi+di, stdj+1, p10)
check(stdi+di, stdj-1, p10)
check(stdi-di, stdj+1, p1)
check(stdi-di, stdj-1, p1)
check(stdi+di*2, stdj, p5)
check(stdi + di, stdj, last)
# ์ผ์ชฝ ์ค๋ฅธ์ชฝ ์ด๋
else:
check(stdi+1, stdj, p7)
check(stdi-1, stdj, p7)
check(stdi+2, stdj, p2)
check(stdi-2, stdj, p2)
check(stdi+1, stdj+dj, p10)
check(stdi-1, stdj+dj, p10)
check(stdi+1, stdj-dj, p1)
check(stdi-1, stdj-dj, p1)
check(stdi, stdj+dj*2, p5)
check(stdi, stdj + dj, last)
def check(i, j, v):
global global_ans, mat, N
if 0<=i<N and 0<=j<N:
mat[i][j] += v
else:
global_ans += v
N = int(input())
mat = [list(map(int, input().split())) for _ in range(N)]
direction = {
0: (0, -1),
1: (1, 0),
2: (0, 1),
3: (-1, 0)
}
try_cnt = 0
ci = cj = N//2
global_ans = 0
move_line()
while not (ci==0 and cj==-1):
for _ in range(4):
move_line()
print(global_ans)
๊ฝค๋ ๋ฒ๊ฑฐ๋กญ๊ธฐ๋ ํ๊ณ , ๋ฌธ์ ์ ํด์์ด ์ด๋ ต๊ธฐ๋ ํ๋ ๋ฌธ์ ์๋ค. ๋ชจ๋๋ค์ด ๋ ์๊ฐ๋ฉด, ๋ ์๊ฐ ๋ชจ๋์ ๋๋จธ์ง๊ฐ ์ํ๋ผ๋ ๊ฒ์ธ๋ฐ, ์ ๋๋ก ์๊ณ ๋ ๋ค์๋ ๋ฌธ์ ๊ฐ ์ ์ํ ๋ง์ด ๋ฌด์์ธ์ง ์๊ฒ๋๋ ๋ฌธ์ ์๋ค.
- 2์ฐจ์ ๋ฐฐ์ด์ ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ค.
- ์ค์๋ถํฐ ์์ํ๊ธฐ ๋๋ฌธ์ ๊ธฐ์ค์ ci, cj๋ N//2๋ก ๋๋ค. NxN 2์ฐจ์ ๋ฐฐ์ด์ ์ค์ ์ธ๋ฑ์ค์ด๋ค.
move_line
ํจ์๋ ๋ฐฉํฅ๊ณผ ์๊ด ์์ด ์คํํ๋ฉด ํ๋์ ๋ฐฉํฅ์ผ๋ก ๊ณ์ ์งํํ๋ค.try_cnt
๋ณ์๋ฅผ ํ๋์ฉ ์ฌ๋ ค๊ฐ๋ฉด์move_line
ํจ์์ ๊ธธ์ด์ ๋ฐฉํฅ์ ๊ฒฐ์ ํ๋ค.- ๋ชจ๋ ํ์ ์ด ์ผ์ชฝ์ผ๋ก ๊ฐ๋ ๋ฐฉํฅ์ผ๋ก ๋์ด ๋๊ณ , ์์๋ ์ผ์ชฝ์ผ๋ก ๊ฐ๋ฏ๋ก, ์ฒ์
move_line
์ ํ ๋ฒ ํธ์ถํ ๋ค, 4๋ฒ์ ํธ์ถํ๋ฉฐ ํ์ฌ ์์น๊ฐ ๋์ ๋๋ฌํ๋์ง ํ์ธํ๋ค. move_line
ํจ์๋ ํ ์นธ์ฉ ์ด๋ํ๋ฉฐ ๋ชจ๋๋ฅผ ์ฎ๊ฒจ๊ฐ๋move_one
ํจ์์ ๊ธธ์ด์ ๋ฐฉํฅ์ ๊ฒฐ์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ ๋ผ์ธ์ ๋ชจ๋ ์ด๋ํ๋ฉด try_cnt๋ฅผ ๋๋ฆฌ๋ฉฐ ๋ค์ ํ์ ์ ์ํ ๋๋น๋ฅผ ํ๋ค.move_one
ํจ์๋ ์ด๋ํ๋ ์์น์ ๋ชจ๋์ ๋น์จ์ ๊ณ์ฐํด ์ฃผ๋ณ์ ์ขํ๋ก ๋ ๋ ค๋ฒ๋ฆฐ๋ค. ๊ฒฉ์ ๋ฐ์ผ๋ก ๋๊ฐ ๋ชจ๋์ ์์global_ans
๋ณ์์ ๋ฐ๋ก ๋์ ํด๋๋ค.- ๋ชจ๋ ํ์ ์ด ๋๋๋ฉด
global_ans
๋ฅผ ์ถ๋ ฅํ๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋๊ธ๋จ๊ธฐ๊ธฐ