6549번 - 히스토그램에서 가장 큰 직사각형
height[0] = -1
height[N+1] = 0 으로 두고
st 는 들어온 블럭의 index 값을 저장하고
st2는 해당 블럭의 넓이 계산이 시작되어야 하는 x값입니다.
블록을 하나씩 받았을 때
st의 top보다 현재 들어온 블럭이 높다면 스택에 바로 넣고
낮다면 이전 스택을 현재 블럭보다 낮은게 나올때 까지 빼면서 넓이를 계산해줍니다.
이 과정에서 현재 스택에 들어있는 블럭중 자기보다 높은 블럭을 계속 빼면서 넓이를 계산하게 되고
마지막으로 뺀 블럭이 현재 높이의 블럭의 계산이 시작될 x 지점이 됩니다.
여러가지 해봐도 음... 뭘까요ㅠㅠ
뉴라인을 붙여서 출력했더니 정답이 되네요.
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
감사합니다!!!!
댓글을 작성하려면 로그인해야 합니다.
orange4glace 8년 전
height[0] = -1
height[N+1] = 0 으로 두고
st 는 들어온 블럭의 index 값을 저장하고
st2는 해당 블럭의 넓이 계산이 시작되어야 하는 x값입니다.
블록을 하나씩 받았을 때
st의 top보다 현재 들어온 블럭이 높다면 스택에 바로 넣고
낮다면 이전 스택을 현재 블럭보다 낮은게 나올때 까지 빼면서 넓이를 계산해줍니다.
이 과정에서 현재 스택에 들어있는 블럭중 자기보다 높은 블럭을 계속 빼면서 넓이를 계산하게 되고
마지막으로 뺀 블럭이 현재 높이의 블럭의 계산이 시작될 x 지점이 됩니다.
여러가지 해봐도 음... 뭘까요ㅠㅠ