Skip to content

Commit 51eefdc

Browse files
committed
[Gold V] Title: 행성 탐사, Time: 88 ms, Memory: 25504 KB -BaekjoonHub
1 parent 4f9d53f commit 51eefdc

2 files changed

Lines changed: 76 additions & 0 deletions

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# [Gold V] 행성 탐사 - 5549
2+
3+
[문제 링크](https://www.acmicpc.net/problem/5549)
4+
5+
### 성능 요약
6+
7+
메모리: 25504 KB, 시간: 88 ms
8+
9+
### 분류
10+
11+
누적 합
12+
13+
### 제출 일자
14+
15+
2026년 1월 1일 18:12:34
16+
17+
### 문제 설명
18+
19+
<p>상근이는 우주선을 타고 인간이 거주할 수 있는 행성을 찾고 있다. 마침내, 전 세계 최초로 인간이 거주할 수 있는 행성을 찾았다. 이 행성은 정글, 바다, 얼음이 뒤얽힌 행성이다. 상근이는 이 행성에서 거주 할 수 있는 구역의 지도를 만들어 지구로 보냈다.</p>
20+
21+
<p>상근이가 보내온 지도는 가로 Ncm, 세로 Mcm 직사각형 모양이다. 지도는 1cm 크기의 정사각형으로 나누어져 있고, 각 구역의 지형이 알파벳으로 표시되어 있다. 지형은 정글, 바다, 얼음 중 하나이며, 정글은 J, 바다는 O, 얼음은 I로 표시되어 있다.</p>
22+
23+
<p>지구에 있는 정인이는 조사 대상 영역을 K개 만들었다. 이때, 각 영역에 정글, 바다, 얼음이 각각 몇 개씩 있는지 구하는 프로그램을 작성하시오.</p>
24+
25+
### 입력
26+
27+
<p>첫째 줄에 지도의 크기 M과 N이 주어진다. (1 ≤ M, N ≤ 1000)</p>
28+
29+
<p>둘째 줄에 정인이가 만든 조사 대상 영역의 개수 K가 주어진다. (1 ≤ K ≤ 100000)</p>
30+
31+
<p>셋째 줄부터 M개 줄에는 상근이가 보낸 지도의 내용이 주어진다.</p>
32+
33+
<p>다음 K개 줄에는 조사 대상 영역의 정보가 주어진다. 정보는 네 정수 a b c d로 이루어져 있다. 구역은 직사각형 모양 이며, 왼쪽 위 모서리의 좌표가 (a, b) 오른쪽 아래 모서리의 좌표가 (c, d)이다.</p>
34+
35+
### 출력
36+
37+
<p>각 조사 대상 영역에 포함되어 있는 정글, 바다, 얼음의 수를 공백으로 구분해 한 줄에 한 정보씩 출력한다.</p>
38+
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#include<iostream>
2+
using namespace std;
3+
4+
const int N = 1001;
5+
int n, m, k;
6+
int js[N][N], os[N][N], is[N][N];
7+
int pj[N][N], po[N][N], pi[N][N];
8+
9+
int main() {
10+
ios::sync_with_stdio(0);
11+
cin.tie(0);
12+
cout.tie(0);
13+
14+
cin >> n >> m >> k;
15+
for (int i = 1; i <= n; ++i) {
16+
for (int j = 1; j <= m; ++j) {
17+
char c; cin >> c;
18+
if (c == 'J') ++js[i][j];
19+
else if (c == 'O') ++os[i][j];
20+
else ++is[i][j];
21+
}
22+
}
23+
24+
for (int i = 1; i <= n; ++i) {
25+
for (int j = 1; j <= m; ++j) {
26+
pj[i][j] = pj[i][j - 1] + pj[i - 1][j] - pj[i - 1][j - 1] + js[i][j];
27+
po[i][j] = po[i][j - 1] + po[i - 1][j] - po[i - 1][j - 1] + os[i][j];
28+
pi[i][j] = pi[i][j - 1] + pi[i - 1][j] - pi[i - 1][j - 1] + is[i][j];
29+
}
30+
}
31+
32+
while (k--) {
33+
int x1, y1, x2, y2; cin >> x1 >> y1 >> x2 >> y2;
34+
cout << pj[x2][y2] - pj[x2][y1 - 1] - pj[x1 - 1][y2] + pj[x1 - 1][y1 - 1] << " "
35+
<< po[x2][y2] - po[x2][y1 - 1] - po[x1 - 1][y2] + po[x1 - 1][y1 - 1] << " "
36+
<< pi[x2][y2] - pi[x2][y1 - 1] - pi[x1 - 1][y2] + pi[x1 - 1][y1 - 1] << "\n";
37+
}
38+
}

0 commit comments

Comments
 (0)