Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[백준] 5549 행성 탐사 [Python, 파이썬] 본문
- 문제 : https://www.acmicpc.net/problem/5549
- 🔑 누적합
- 정글, 바다, 얼음의 누적합을 구할 2차원 리스트 3개를 만든다.
- 지도를 순회하면서 누적합을 구한다.
- 구한 누적합 리스트를 통해 조사를 해서 정글, 바다, 얼음의 수를 구하면 끝 ✨
import sys
input = sys.stdin.readline
m, n = map(int, input().split())
k = int(input())
MAP = [list(input().strip()) for i in range(m)]
J = [[0] * (n+1) for _ in range(m+1)] # 정글
O = [[0] * (n+1) for _ in range(m+1)] # 바다
I = [[0] * (n+1) for _ in range(m+1)] # 얼음
for i in range(1, m+1): # 누적합
for j in range(1, n+1):
if MAP[i-1][j-1] == 'J':
J[i][j] = J[i][j-1] + J[i-1][j] - J[i-1][j-1] + 1
O[i][j] = O[i][j-1] + O[i-1][j] - O[i-1][j-1]
I[i][j] = I[i][j-1] + I[i-1][j] - I[i-1][j-1]
elif MAP[i-1][j-1] == 'O':
J[i][j] = J[i][j-1] + J[i-1][j] - J[i-1][j-1]
O[i][j] = O[i][j-1] + O[i-1][j] - O[i-1][j-1] + 1
I[i][j] = I[i][j-1] + I[i-1][j] - I[i-1][j-1]
else:
J[i][j] = J[i][j-1] + J[i-1][j] - J[i-1][j-1]
O[i][j] = O[i][j-1] + O[i-1][j] - O[i-1][j-1]
I[i][j] = I[i][j-1] + I[i-1][j] - I[i-1][j-1] + 1
for _ in range(k):
x1, y1, x2, y2 = map(int, input().split())
j = J[x2][y2]-J[x2][y1-1]-J[x1-1][y2]+J[x1-1][y1-1]
o = O[x2][y2]-O[x2][y1-1]-O[x1-1][y2]+O[x1-1][y1-1]
i = I[x2][y2]-I[x2][y1-1]-I[x1-1][y2]+I[x1-1][y1-1]
print(j, o, i)
'백준' 카테고리의 다른 글
[백준] 1436 영화감독 숌 [Python, 파이썬] (1) | 2023.12.03 |
---|---|
[백준] 17299 오등큰수 [Python, 파이썬] (0) | 2023.12.01 |
[백준] 15903 카드 합체 놀이 [Python, 파이썬] (1) | 2023.11.24 |
[백준] 28283 해킹 [Python, 파이썬] (0) | 2023.11.13 |
[VS Code가상환경] 파이썬 가상 환경 생성 (1) | 2023.11.12 |
Comments