반응형

문제링크:www.acmicpc.net/problem/14719

 

14719번: 빗물

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

www.acmicpc.net

 

평범한 구현문제입니다.

 

문제에서 준 조건은 2가지 입니다.

 

  • 블록내부에 빈공간은 생기지 않는다.
  • 바닥은 막혀있다 가정한다.

 

h와 w의 범위가 1 ~ 500 까지 임으로 단순 구현을 통해서 문제를 해결했습니다.  O(n^3)

 

 

500 x 500 각각의 좌표에서 빗물이 보관되는지 확인하여 구현했습니다.

쉬운문제이기 때문에 코드를 보시면 금방 이해하실겁니다.

 

 

정답코드입니다.

#include <iostream>
using namespace std;


int h = 0, w = 0;
int arr[501] = { 0, };
int result = 0;
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);

	cin >> h >> w;
	for (int i = 1; i <= w; i++)
		cin >> arr[i];
	for (int i = 1; i <= h; i++) {
		for (int j = 2; j <= w - 1; j++) {
			if (arr[j] >= i) continue;

			bool leftt = false;
			bool rightt = false;
			//left identify
			for (int k = j - 1; k >= 1; k--) {
				if (arr[k] >= i)
				{
					leftt = true;
					break;
				}
			}
			//right identify
			for (int k = j + 1; k <= w; k++) {
				if (arr[k] >= i)
				{
					rightt = true;
					break;
				}
			}

			if (leftt == true && rightt == true)
				result++;
		}
	}

	cout << result << endl;

	return 0;
}
반응형

'알고리즘 > 구현' 카테고리의 다른 글

[백준] 2116-주사위 쌓기(C++)  (0) 2020.12.18
[백준] 2636-치즈(C++)  (0) 2020.12.18
[백준] 5624-좋은 수  (0) 2020.08.08
[백준] 6593-상범 빌딩(C++)  (0) 2020.07.05
[백준] 5549-행성 탐사(C++)  (0) 2020.06.14

+ Recent posts