Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 싸피 합격
- Proxy
- 클라우드 서버
- 세마포어란?
- 뮤텍스
- SSAFY
- 다익스트라
- floyd-warshall
- 웹 호스팅
- 세마포어와 뮤텍스
- 호스팅
- 서버 호스팅
- 뮤텍스란?
- 플로이드 워셜
- Dijkstra Algorithm
- 싸피
- 최단 경로
- 동기화
- 삼성 청년 SW 아카데미
- 다익스트라 알고리즘
- 플로이드 와샬
- 호스팅이란?
- Synchronization
- 세마포어
- Proxy Server
- 세마포어와 뮤텍스의 차이
- 프록시
- 싸피 면접 후기
- 프록시서버
Archives
- Today
- Total
어제의 나보다 성장한 오늘의 나
[백준][BOJ-14719][자바] 빗물 본문
https://www.acmicpc.net/problem/14719
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int answer = 0;
int[] rainBlock = new int[M];
st = new StringTokenizer(br.readLine());
for(int i=0; i<M; i++) {
rainBlock[i] = Integer.parseInt(st.nextToken());
}
for(int i=1; i<M-1; i++) {
int[] leftArr = Arrays.copyOfRange(rainBlock, 0, i);
int leftMax = Arrays.stream(leftArr).max().getAsInt();
int[] rightArr =Arrays.copyOfRange(rainBlock, i, M);
int rightMax = Arrays.stream(rightArr).max().getAsInt();
int min = Math.min(leftMax, rightMax);
if( rainBlock[i] >= min) continue;
answer += min - rainBlock[i];
}
System.out.println(answer);
}
}
정리
문제만 바로 이해한다면 빠르게 풀 수 있는 문제였습니다.
1. 블록을 저장하는 배열을 선언합니다.
2. 양쪽 끝은 무조건 값이 작든 많은 물이 고일 수가 없기 때문에 1부터 M-1까지 반복합니다.
3. 자기 자신에서 왼쪽에 제일 큰 값과 오른쪽의 제일 큰 값을 가져옵니다.
4. 두 개의 값 중 작은 값이 해당 자리에서 빗물이 넘치지 않고 고일 수는 최대치입니다.
5. 만약 해당 자리의 블록의 수가 min 보다 클 경우 고일 수가 없습니다.
6. 마지막으로 5번 조건에 만족 안 한다면 물이 고일 수 있기 때문에 min - 현재 블록 높이를 빼면 해당 자리에 고일 수 있는 빗물의 양입니다.
끝!
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
[백준][BOJ-2212][JAVA] 센서 (0) | 2021.06.18 |
---|---|
[백준][BOJ-2812][JAVA] 크게 만들기 (0) | 2021.06.05 |
[백준][BOJ-1238][JAVA] 파티 (0) | 2021.06.04 |
[백준][BOJ-8980][JAVA] 택배 (0) | 2021.06.03 |
[백준][BOJ-11000][JAVA] 강의실 배정 (0) | 2021.06.02 |
Comments