smooth waters run deep

1d-1c/BOJ

14179_빗물 (JAVA)

yeon_11 2020. 10. 27. 17:02
 

14719번: 빗물

첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치

www.acmicpc.net

import java.util.Scanner;
import java.util.Stack;

public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		int sero = sc.nextInt();
		int garo = sc.nextInt();

		int[] block = new int[garo];
		int[] rain = new int[garo];
		for(int i=0; i<garo; i++){
			block[i] = rain[i] = sc.nextInt();
		}

		//왼->오 탐색
		Stack<Integer> stack = new Stack<>();
		int temp = block[0];
		for(int i=0; i<garo; i++){
			if(temp > block[i])
				stack.push(i);
			else{
				while(!stack.isEmpty()){
					int n = stack.pop();
					rain[n] = temp;
				}
				temp = block[i];
			}
		}
		stack.clear();

		//오->왼 탐색
		temp = block[garo-1];
		for(int i=garo-1; i>=0; i--){
			if(temp > block[i])
				stack.push(i);
			else{
				while(!stack.isEmpty()){
					int n = stack.pop();
					rain[n] = temp;
				}
				temp = block[i];
			}
		}
		stack.clear();

		//정답 추출
		int ans = 0;
		for(int i=0; i<garo; i++){
			ans += rain[i]-block[i];
		}
		System.out.println(ans);
	}
}

 

2304번 문제 변형이다. (두 문제 난이도가 왜 다른지 의문!!)

2304번과 다른 점 : 배열을 두개 만들어 입력받고, 배열 하나만 수정하고 나중에 두개 차이를 모두 더해 출력한다.

 

[백준] 2304_창고 다각형 (Silver2) (JAVA)

import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] gidung = new int[1001];..

yeone2ee.tistory.com

 

 

'1d-1c > BOJ' 카테고리의 다른 글

1436_영화감독 슘 (JAVA)  (0) 2020.10.29
2750_수 정렬하기1 (JAVA)  (0) 2020.10.28
2304_창고 다각형 (JAVA)  (0) 2020.10.27
1152_단어의 개수 (JAVA)  (0) 2020.10.26
[변형 문제] 백준 1662_압축  (0) 2020.10.26