아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

섬

면접 대비

시간 제한1초메모리 제한128 MB

요약
일직선상의 높이들이 주어질 때, 물이 차오르는 동안 한 순간에 드러나는 섬(분리된 구간) 개수의 최댓값을 구한다.
난이도

보통10점 중 5점

유형
정렬, 배열, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

비가 올 때마다 농부 John의 밭은 물에 잠긴다. 밭이 완벽하게 평평하지 않기 때문에 물은 고르지 않게 차오르고, 물 위로 드러난 땅은 서로 떨어진 여러 개의 "섬"으로 나뉘곤 한다.

밭은 NN개의 연속된 높이 값 H1,H2,…,HNH_1, H_2, \dots, H_N으로 주어지는 1차원 지형이다. 밭의 양쪽 끝은 사실상 무한히 높은 벽으로 막혀 있다고 하자. 폭우가 밭을 채우면 가장 낮은 지역부터 물에 잠기면서 여러 개의 분리된 섬이 생기고, 결국에는 모든 땅이 물에 잠긴다. 물의 높이가 어떤 땅의 높이와 같아지는 순간, 그 땅은 물에 잠긴 것으로 본다.

예를 들어 높이가 3,5,2,3,1,4,2,33, 5, 2, 3, 1, 4, 2, 3일 때, 물을 11 단위보다 조금 더 채우면 섬이 44개 생기며(이 순간이 섬이 가장 많은 때이다), 물을 모두 합쳐 77 단위만큼 채우면 드러난 섬은 22개만 남는다.

물이 전혀 없는 상태에서 시작하여 밭 전체가 물에 잠길 때까지, 어느 한 순간에 동시에 보이는 섬의 최대 개수를 구하여라.

입력

  • 첫째 줄에 정수 NN이 주어진다 (1≤N≤100,0001 \le N \le 100{,}000).
  • 다음 NN개의 줄 중 ii번째 줄에는 높이 HiH_i가 주어진다 (1≤Hi≤1,000,000,0001 \le H_i \le 1{,}000{,}000{,}000).

출력

  • 폭우가 진행되는 동안 어느 한 순간에 나타나는 섬의 최대 개수를 정수 하나로 출력한다.

힌트

높이가 3,5,2,3,1,4,2,33, 5, 2, 3, 1, 4, 2, 3인 경우를 생각해 보자. 물의 높이가 22보다 크고 33보다 작은 구간에 있을 때, 높이가 33 이상인 칸들만 물 위에 남아 땅을 44개의 서로 떨어진 섬으로 나누며, 이것이 어느 순간에 볼 수 있는 섬의 최대 개수이다.

예제2

  1. 예제 1

    입력
    8
    3
    5
    2
    3
    1
    4
    2
    3
    
    예상 출력
    4
    
  2. 예제 2

    입력
    5
    1
    5
    1
    5
    1
    
    예상 출력
    2