이 영역을 누르면 첫 페이지로 이동
천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

페이지 맨 위로 올라가기

천천히 꾸준히 조용히

천천히 꾸준히 조용히.. i3months 블로그

[백준] 1725 히스토그램 - Java

  • 2021.11.17 11:23
  • Algorithm/Baekjoon
반응형

 

 

 

스택에 인덱스를 넣어주고 따로 배열을 설정해 배열에는 직사각형의 높이에 대한 정보를 넣었다.

넓이를 구하는 과정은 이전에 탐색한 직사각형의 높이가 현재 탐색하고 있는 직사각형의 높이보다 높을 때이다.

이 때를 기준으로 지금까지 쌓아온 스택 인덱스에 해당하는 직사각형의 높이들을 현재 탐색하고 있는 높이보다 작거나 같은 높이들을 대상으로 하나씩 pop해주며 넓이를 계산한다.

 

차례차례 pop을 진행해주며 넓이를 구해주는데, 이 과정은 코드를 참고하자.

 

이후 pop 과정 수행 후 스택에 남아있는 원소들에 대해서도 처리해주기 위해 다시 pop을 수행한 후 출력해줬다.

 

import java.util.*;

public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		long maxvalue = 0;
		int N = sc.nextInt();
		int[] heightarr = new int[N];
		Stack<Integer> st = new Stack<>();

		for (int i = 0; i < heightarr.length; i++) {
			heightarr[i] = sc.nextInt();
		}
		
		
		// 스택에 체인을 걸어서 구해준다.
		// 스택에는 인덱스, heightarr에는 높이정보
		
		for (int i = 0; i < heightarr.length; i++) {
			while (st.isEmpty() == false && heightarr[st.peek()] >= heightarr[i]) {
				// 체인을 설정할 때 지금 탐색하는 막대 높이보다 바로전에 탐색한 막대 높이보다 커야함
				long height = heightarr[st.pop()];
				// 체인 형성이 안됐을때는 pop하면서 높이 구함
				long width = 0;
				if (st.isEmpty()) {
					width = i;
				} else {
					width = i - 1 - st.peek();
				}
				maxvalue = Math.max(maxvalue, width * height);
			}
			st.push(i);
		}
		
		// 스택이 비어있지 않으면 나머지에 대해서도 처리해줘야함.
		while(st.isEmpty()==false) {
			long height = heightarr[st.pop()];
			long width = 0;
			if(st.isEmpty()) {
				width = heightarr.length;	
			}else {
				width = heightarr.length -1 -st.peek();
			}
			maxvalue = Math.max(maxvalue, width*height);
		}
		
		System.out.print(maxvalue);

	}
}

 

 

이 문제는 두시간동안 풀다 방향을 아예 잘못 설정한 것 같아 다른 블로그 글을 참고해서 풀었다.

 

https://st-lab.tistory.com/255

반응형

'Algorithm > Baekjoon' 카테고리의 다른 글

[백준] 2346 풍선 터뜨리기 - Java / Python  (0) 2022.02.11
[백준] 1620 나는야 포켓몬 마스터 이다솜 - Java / Python  (0) 2022.02.11
[백준] 1016 제곱ㄴㄴ수 - Java  (1) 2021.11.17
[백준] 6549 히스토그램에서 가장 큰 직사각형 - Java  (0) 2021.11.14
[백준] 23056 참가자 명단 - Java  (0) 2021.10.31

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [백준] 2346 풍선 터뜨리기 - Java / Python

    [백준] 2346 풍선 터뜨리기 - Java / Python

    2022.02.11
  • [백준] 1620 나는야 포켓몬 마스터 이다솜 - Java / Python

    [백준] 1620 나는야 포켓몬 마스터 이다솜 - Java / Python

    2022.02.11
  • [백준] 1016 제곱ㄴㄴ수 - Java

    [백준] 1016 제곱ㄴㄴ수 - Java

    2021.11.17
  • [백준] 6549 히스토그램에서 가장 큰 직사각형 - Java

    [백준] 6549 히스토그램에서 가장 큰 직사각형 - Java

    2021.11.14
다른 글 더 둘러보기

정보

천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

  • 천천히 꾸준히 조용히의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (684)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • C (25)
      • C++ (12)
      • Java (19)
      • JavaScript (15)
      • Python (1)
      • PHP (2)
    • Computer Science (144)
      • Machine Learning (38)
      • Operating System (18)
      • Computer Network (28)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Data Science (2)
      • Embedded Software (0)
      • Computer Architecture (4)
      • Compiler Design (11)
      • Computer Security (13)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Amazon Web Service (8)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • 💡 솔루션 (17)
    • 👥 모각코 (12)
    • 💬 기록 (8)
    • 📚 공부 (7)
    • -------------- (25)

최근 글

나의 외부 링크

메뉴

  • 홈
반응형

정보

i3months의 천천히 꾸준히 조용히

천천히 꾸준히 조용히

i3months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © i3months.

티스토리툴바