๐ค๋ฌธ์ ํด๊ฒฐ
- S1 | DP
- (0,0) ๋ถํฐ ๋ฆฌ์คํธ์ ๋ชจ๋ ์ง์ ๊น์ง ๊ฐ๊ฐ์ ํฉ์ ๊ตฌํ๋ค.
- 2๋ฒ์ ์ํํ๊ณ ๋๋ฉด ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
- ํฉ์ ๋์ ํ ๋ฆฌ์คํธ๋ก ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ๊ตฌํ๊ณ ์ ํ๋ ์์ญ์ ๊ตฌํ๊ณ ํ์์๋ ๋ถ๋ถ์ ๋นผ์ฃผ๋ฉด ๋๋ค.
- ์ฌ๊ธฐ์ ๋ง์ด ํท๊ฐ๋ฆด ์ ์๋๋ฐ ๋ฌธ์ ๋ 1,1๋ถํฐ ์์ํ์ง๋ง ์ฐ๋ฆฌ๋ 0,0๋ถํฐ ์์ํ๋ค.
๋, ๋นผ์ค์ผํ๋ ์์ญ(๋นจ๊ฐ์) ๋ถ๋ถ์ ๋๋ฒ ๋นผ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ค์ ๋ํด์ค ์์ญ(์ด๋ก์)์ ํ๋ฒ ๋ํด์ค๋ค. - ์ฌ๊ธฐ์ ๋์ด ์๋๋ค. x์ถ์ด ์ฒ์๋ถํฐ ์ธ๊ฒฝ์ฐ์ y์ถ์ด ์ฒ์๋ถํฐ์ธ ๊ฒฝ์ฐ, ๋ ๋ค ์๋๊ฒฝ์ฐ ์ด 3๊ฐ์ง ๊ฒฝ์ฐ๋ก ๋๋ ์ ํ์ด์ค์ผํ๋ค.
๐จ ์๊ฐ์ด๊ณผ ๋๋ฌธ์ ํ๋ค์๋ ๋ฌธ์ ...
๐ป์์ค ์ฝ๋
import sys
from itertools import accumulate # ๋์ ํฉ์ ๊ตฌํด์ฃผ๋ ๋ด์ฅํจ์
if __name__ == "__main__":
N, M = map(int, input().split())
numbers = [list(map(int, sys.stdin.readline().split())) for _ in range(N)]
# 0,0 ๋ถํฐ n1,n2๊น์ง ๊ฐ๊ฐ์ ํฉ์ ๋ฏธ๋ฆฌ ๊ตฌํด๋๊ธฐ
for i in range(N):
numbers[i] = list(accumulate(numbers[i]))
for i in range(1, N):
for j in range(N):
numbers[i][j] += numbers[i-1][j]
print()
for row in numbers:
print(row)
orders = [list(map(int, sys.stdin.readline().split())) for _ in range(M)]
for x1, y1, x2, y2 in orders:
all = numbers[x2-1][y2-1] # ์ ์ฒด
if x1 == 1 and y1 == 1:
print(all)
continue
minus2 = numbers[x2 - 1][y1 - 2] # ๋บ๋ถ๋ถ 1
minus1 = numbers[x1 - 2][y2 - 1] # ๋บ๋ถ๋ถ 2
if x1 == 1:
print(all-minus2)
elif y1 == 1:
print(all-minus1)
else:
plus = numbers[x1 - 2][y1 - 2] # ์ค๋ณต์ผ๋ก ๋นผ์ ๋ค์ ๋ํด์ผ๋ ๋ถ๋ถ
print(all-minus1-minus2+plus)
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋งํฌ: https://www.acmicpc.net/problem/11660
๋ฌธ์
N×N๊ฐ์ ์๊ฐ N×N ํฌ๊ธฐ์ ํ์ ์ฑ์์ ธ ์๋ค. (x1, y1)๋ถํฐ (x2, y2)๊น์ง ํฉ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. (x, y)๋ xํ y์ด์ ์๋ฏธํ๋ค.
์๋ฅผ ๋ค์ด, N = 4์ด๊ณ , ํ๊ฐ ์๋์ ๊ฐ์ด ์ฑ์์ ธ ์๋ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์.
1 | 2 | 3 | 4 |
2 | 3 | 4 | 5 |
3 | 4 | 5 | 6 |
4 | 5 | 6 | 7 |
์ฌ๊ธฐ์ (2, 2)๋ถํฐ (3, 4)๊น์ง ํฉ์ ๊ตฌํ๋ฉด 3+4+5+4+5+6 = 27์ด๊ณ , (4, 4)๋ถํฐ (4, 4)๊น์ง ํฉ์ ๊ตฌํ๋ฉด 7์ด๋ค.
ํ์ ์ฑ์์ ธ ์๋ ์์ ํฉ์ ๊ตฌํ๋ ์ฐ์ฐ์ด ์ฃผ์ด์ก์ ๋, ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ์ ํฌ๊ธฐ N๊ณผ ํฉ์ ๊ตฌํด์ผ ํ๋ ํ์ M์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ํ์ ์ฑ์์ ธ ์๋ ์๊ฐ 1ํ๋ถํฐ ์ฐจ๋ก๋๋ก ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๋ค ๊ฐ์ ์ ์ x1, y1, x2, y2 ๊ฐ ์ฃผ์ด์ง๋ฉฐ, (x1, y1)๋ถํฐ (x2, y2)์ ํฉ์ ๊ตฌํด ์ถ๋ ฅํด์ผ ํ๋ค. ํ์ ์ฑ์์ ธ ์๋ ์๋ 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. (x1 ≤ x2, y1 ≤ y2)
์ถ๋ ฅ
์ด M์ค์ ๊ฑธ์ณ (x1, y1)๋ถํฐ (x2, y2)๊น์ง ํฉ์ ๊ตฌํด ์ถ๋ ฅํ๋ค.
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ๋ฐฑ์ค - 2251. ๋ฌผํต (0) | 2020.08.25 |
---|---|
[python] ๋ฐฑ์ค - 1495. ๊ธฐํ๋ฆฌ์คํธ (0) | 2020.08.24 |
[html] ๊ณต๋ฐฑ ๋ฌธ์, ๋์ด์ฐ๊ธฐ (2) | 2020.08.22 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ๊ธฐ๋ฅ๊ณผ ๋ณด ์ค์น(2020 KAKAO BLIND RECRUITMENT) (1) | 2020.08.22 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ๋ฌธ์์ด ์์ถ(2020 KAKAO BLIND RECRUITMENT) (0) | 2020.08.21 |