문제 링크
메모리: 4120 KB, 시간: 28 ms
자료 구조, 스택
2024년 4월 27일 02:30:00
일직선으로 다양한 높이의 건물이 총 N$N$개가 존재한다. 각 건물 옥상에서 양 옆에 존재하는 건물의 옆을 몇 개 볼 수 있는지 궁금해졌다.
i$i$번째 건물 기준으로 i−1$i - 1$, i−2$i - 2$, ..., 1$1$번째 건물은 왼쪽에, i+1$i + 1$, i+2$i + 2$, ..., N$N$번째 건물은 오른쪽에 있다. 각 건물 사이의 거리는 다 동일하다.
현재 있는 건물의 높이가 L$L$이라고 가정하면 높이가 L$L$보다 큰 곳의 건물만 볼 수 있다.
바라보는 방향으로 높이가 L$L$인 건물 뒤에 높이가 L$L$이하인 건물이 있다면 가려져서 보이지 않는다.
번호 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
높이 |
3 |
7 |
1 |
6 |
3 |
5 |
1 |
7 |
보이는 건물 번호 |
2 |
x |
2, 4, 8 |
2, 8 |
2,4,6,8 |
2,4,8 |
2,4,6,8 |
x |
각 건물에서 볼 수 있는 건물들이 어떤것이 있는지 구해보자.
첫번째 줄에 건물의 개수 N$N$이 주어진다.
두번째 줄에는 N$N$개의 건물 높이가 공백으로 구분되어 주어진다.
i(1≤i≤N)$i(1 \le i \le N)$번째 건물에서 볼 수 있는 건물의 개수를 출력한다.
만약 볼 수 있는 건물의 개수가 1개 이상이라면 i$i$번째 건물에서 거리가 가장 가까운 건물의 번호 중 작은 번호로 출력한다.