[BOJ][๐ก5][๋ฐฑ์ค#05549] ํ์ฑ ํ์ฌ
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold V
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
์๊ทผ์ด๋ ์ฐ์ฃผ์ ์ ํ๊ณ ์ธ๊ฐ์ด ๊ฑฐ์ฃผํ ์ ์๋ ํ์ฑ์ ์ฐพ๊ณ ์๋ค. ๋ง์นจ๋ด, ์ ์ธ๊ณ ์ต์ด๋ก ์ธ๊ฐ์ด ๊ฑฐ์ฃผํ ์ ์๋ ํ์ฑ์ ์ฐพ์๋ค. ์ด ํ์ฑ์ ์ ๊ธ, ๋ฐ๋ค, ์ผ์์ด ๋ค์ฝํ ํ์ฑ์ด๋ค. ์๊ทผ์ด๋ ์ด ํ์ฑ์์ ๊ฑฐ์ฃผ ํ ์ ์๋ ๊ตฌ์ญ์ ์ง๋๋ฅผ ๋ง๋ค์ด ์ง๊ตฌ๋ก ๋ณด๋๋ค. ์๊ทผ์ด๊ฐ ๋ณด๋ด์จ ์ง๋๋ ๊ฐ๋ก Ncm, ์ธ๋ก Mcm ์ง์ฌ๊ฐํ ๋ชจ์์ด๋ค. ์ง๋๋ 1cm ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ์ผ๋ก ๋๋์ด์ ธ ์๊ณ , ๊ฐ ๊ตฌ์ญ์ ์งํ์ด ์ํ๋ฒณ์ผ๋ก ํ์๋์ด ์๋ค. ์งํ์ ์ ๊ธ, ๋ฐ๋ค, ์ผ์ ์ค ํ๋์ด๋ฉฐ, ์ ๊ธ์ J, ๋ฐ๋ค๋ O, ์ผ์์ I๋ก ํ์๋์ด ์๋ค. ์ง๊ตฌ์ ์๋ ์ ์ธ์ด๋ ์กฐ์ฌ ๋์ ์์ญ์ K๊ฐ ๋ง๋ค์๋ค. ์ด๋, ๊ฐ ์์ญ์ ์ ๊ธ, ๋ฐ๋ค, ์ผ์์ด ๊ฐ๊ฐ ๋ช ๊ฐ์ฉ ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ง๋์ ํฌ๊ธฐ M๊ณผ N์ด ์ฃผ์ด์ง๋ค. (1 โค M, N โค 1000) ๋์งธ ์ค์ ์ ์ธ์ด๊ฐ ๋ง๋ ์กฐ์ฌ ๋์ ์์ญ์ ๊ฐ์ K๊ฐ ์ฃผ์ด์ง๋ค. (1 โค K โค 100000) ์ ์งธ ์ค๋ถํฐ M๊ฐ ์ค์๋ ์๊ทผ์ด๊ฐ ๋ณด๋ธ ์ง๋์ ๋ด์ฉ์ด ์ฃผ์ด์ง๋ค. ๋ค์ K๊ฐ ์ค์๋ ์กฐ์ฌ ๋์ ์์ญ์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ์ ๋ณด๋ ๋ค ์ ์ a b c d๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ตฌ์ญ์ ์ง์ฌ๊ฐํ ๋ชจ์ ์ด๋ฉฐ, ์ผ์ชฝ ์ ๋ชจ์๋ฆฌ์ ์ขํ๊ฐ (a, b) ์ค๋ฅธ์ชฝ ์๋ ๋ชจ์๋ฆฌ์ ์ขํ๊ฐ (c, d)์ด๋ค.
์ถ๋ ฅ
๊ฐ ์กฐ์ฌ ๋์ ์์ญ์ ํฌํจ๋์ด ์๋ ์ ๊ธ, ๋ฐ๋ค, ์ผ์์ ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด ํ ์ค์ ํ ์ ๋ณด์ฉ ์ถ๋ ฅํ๋ค.
์์
์ ๋ ฅ
4 7
4
JIOJOIJ
IOJOIJO
JOIJOOI
OOJJIJO
3 5 4 7
2 2 3 6
2 2 2 2
1 1 4 7
์ถ๋ ฅ
1 3 2
3 5 2
0 1 0
10 11 7
My Sol
import sys
input = sys.stdin.readline
D = {'J':0, 'O':1, 'I':2}
I, J = map(int, input().split())
K = int(input())
mat = [list(input()) for _ in range(I)]
dp = [[[0]*3 for _ in range(J+1)] for _ in range(I+1)]
for i in range(1, I+1):
for j in range(1, J+1):
v = mat[i-1][j-1]
dp[i][j][D[v]] += 1
for v1, v2, v3 in (dp[i-1][j], dp[i][j-1], [-k for k in dp[i-1][j-1]]):
dp[i][j][0] += v1
dp[i][j][1] += v2
dp[i][j][2] += v3
for _ in range(K):
i1, j1, i2, j2 = map(int, input().split())
ans = [0]*3
for v1, v2, v3 in (dp[i2][j2], dp[i1-1][j1-1]):
ans[0] += v1
ans[1] += v2
ans[2] += v3
for v1, v2, v3 in (dp[i1-1][j2], dp[i2][j1-1]):
ans[0] -= v1
ans[1] -= v2
ans[2] -= v3
print(*ans)
- DP๋ฅผ ์ฌ์ฉํด์ (1, 1)๋ถํฐ (i, j)๊น์ง ๋์ ํฉ์ ๊ฐ ์ขํ์ ๋ฐฐ์ด๋ก ์ ์ฅํ๋ค.
- (i1, j1)๋ถํฐ (i2, j2)๋ฅผ ๊ผญ์ง์ ์ผ๋ก ํ๋ ์ฌ๊ฐํ์, (1, 1)๋ถํฐ (i2, j2)์ ํฐ ์ฌ๊ฐํ์์ (1, 1)๋ถํฐ (i-1, j2), (1, 1)๋ถํฐ (i2, j1-1)์ ๊ผญ์ง์ ์ผ๋ก ํ๋ ๋ ์ฌ๊ฐํ์ ๋บ ๊ฒ์ (1, 1)๋ถํฐ (i1-1, j1-1)๊น์ง์ ์ฌ๊ฐํ์ ๋ค์ ๋ํ ๊ฒ๊ณผ ๊ฐ๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋๊ธ๋จ๊ธฐ๊ธฐ