Skip to content

Commit ccf5ab2

Browse files
committed
[Gold V] Title: 옥상 정원 꾸미기, Time: 252 ms, Memory: 24292 KB -BaekjoonHub
1 parent 438b6b6 commit ccf5ab2

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# [Gold V] 옥상 정원 꾸미기 - 6198
2+
3+
[문제 링크](https://www.acmicpc.net/problem/6198)
4+
5+
### 성능 요약
6+
7+
메모리: 24292 KB, 시간: 252 ms
8+
9+
### 분류
10+
11+
자료 구조, 스택
12+
13+
### 제출 일자
14+
15+
2025년 8월 30일 20:18:09
16+
17+
### 문제 설명
18+
19+
<p><img alt="sook-001(1).jpg" src="https://upload.acmicpc.net/ca458f07-d3b3-436f-a996-49080935149a/-/preview/"></p>
20+
21+
<p>도시에는 N개의 빌딩이 있다.</p>
22+
23+
<p>빌딩 관리인들은 매우 성실 하기 때문에, 다른 빌딩의 옥상 정원을 벤치마킹 하고 싶어한다.</p>
24+
25+
<p>i번째 빌딩의 키가 h<sub>i</sub>이고, 모든 빌딩은 일렬로 서 있고 오른쪽으로만 볼 수 있다.</p>
26+
27+
<p>i번째 빌딩 관리인이 볼 수 있는 다른 빌딩의 옥상 정원은 i+1, i+2, .... , N이다.</p>
28+
29+
<p>그런데 자신이 위치한 빌딩보다 높거나 같은 빌딩이 있으면 그 다음에 있는 모든 빌딩의 옥상은 보지 못한다.</p>
30+
31+
<p>예) N=6, H = {10, 3, 7, 4, 12, 2}인 경우</p>
32+
33+
<pre> =
34+
= =
35+
= - =
36+
= = = -> 관리인이 보는 방향
37+
= - = = =
38+
= = = = = =
39+
10 3 7 4 12 2 -> 빌딩의 높이
40+
[1][2][3][4][5][6] -> 빌딩의 번호</pre>
41+
42+
<ul>
43+
<li>1번 관리인은 2, 3, 4번 빌딩의 옥상을 확인할 수 있다.</li>
44+
<li>2번 관리인은 다른 빌딩의 옥상을 확인할 수 없다.</li>
45+
<li>3번 관리인은 4번 빌딩의 옥상을 확인할 수 있다.</li>
46+
<li>4번 관리인은 다른 빌딩의 옥상을 확인할 수 없다.</li>
47+
<li>5번 관리인은 6번 빌딩의 옥상을 확인할 수 있다.</li>
48+
<li>6번 관리인은 마지막이므로 다른 빌딩의 옥상을 확인할 수 없다.</li>
49+
</ul>
50+
51+
<p>따라서, 관리인들이 옥상정원을 확인할 수 있는 총 수는 3 + 0 + 1 + 0 + 1 + 0 = 5이다.</p>
52+
53+
### 입력
54+
55+
<ul>
56+
<li>첫 번째 줄에 빌딩의 개수 N이 입력된다.(1 ≤ N ≤ 80,000)</li>
57+
<li>두 번째 줄 부터 N+1번째 줄까지 각 빌딩의 높이가 h<sub>i</sub> 입력된다. (1 ≤ h<sub>i</sub> ≤ 1,000,000,000)</li>
58+
</ul>
59+
60+
### 출력
61+
62+
<ul>
63+
<li>각 관리인들이 벤치마킹이 가능한 빌딩의 수의 합을 출력한다.</li>
64+
</ul>
65+
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
public class Main {
5+
public static void main(String[] args) throws IOException {
6+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+
int N = Integer.parseInt(br.readLine());
8+
9+
long answer = 0;
10+
Stack<Integer> stack = new Stack<>();
11+
12+
for (int i = 0; i < N; i++) {
13+
int now = Integer.parseInt(br.readLine());
14+
15+
while (!stack.isEmpty() && stack.peek() <= now) {
16+
stack.pop();
17+
}
18+
19+
answer += stack.size();
20+
stack.push(now);
21+
}
22+
23+
System.out.println(answer);
24+
}
25+
}

0 commit comments

Comments
 (0)