일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- presigned url
- ec2 nginx websocket reverse proxy
- 예외 처리
- 개발 프로젝트
- oauth2.0
- 구글 로그인
- logout
- 이미지 업로드
- 백준 10815 # 백준 Java
- 소셜 로그인
- jwt
- 자바 orm
- GoormIDE
- AWS
- 도메인 주도 개발
- fastapi
- CustomException
- Flask
- wss 연결 실패
- validation
- 관점 지향 프로그래밍
- @Valid
- session
- 스프링부트
- OpenAI API
- S3
- springboot
- 패러다임 불일치
- spring boot
- spring websocket nginx 설정
Archives
- Today
- Total
개발세발은 안되요
[C++] 백준 14719 : 빗물 본문
문제
https://www.acmicpc.net/problem/14719
풀이
내 아이디어로 푸는 것을 실패해서 문제 푸는 아이디어를 얻을 때 다른 기술 블로그를 참고했다. https://hwan-shell.tistory.com/276 이 블로그의 아이디어를 참고하여 구현했다.
#include <iostream>
using namespace std;
int h, w, ans;
int block[501];
int left_h(int i){
int m = 0;
for(int j=0; j<=i; j++){
if(m < block[j]) m = block[j];
}
return m;
}
int right_h(int i){
int m = 0;
for(int j = i; j<w; j++){
if(m < block[j]) m = block[j];
}
return m;
}
int main()
{
cin >> h >> w;
for(int i=0; i<w; i++){
cin >> block[i];
}
for(int i=1; i<w-1; i++){
int l = left_h(i);
int r = right_h(i);
if(l > r){
ans += r - block[i];
}
else{
ans += l - block[i];
}
}
cout << ans << "\n";
return 0;
}
메모
처음에 생각했던 방법은 기준 벽보다 더 높은 높이의 벽이 나타나면 그 가운데 구간에 물을 채우고 기준벽을 갱신하고.. 이런 방법을 생각했다. 그런데 잘못된 답이 나오는 예외가 발생하고..ㅜㅜ 그래서 풀이를 찾아봤는데 생각보다 너무너무 쉬워서 놀랐다.. 리프레쉬? 좀 하고 다시 풀어봤으면 혼자서 풀 수 있었던 문제인 것 같아 아쉽다!
당장 문제가 안 풀릴 때 계속 고민하지 말고 다음 날에 다시 생각해보기! ^*^
'알고리즘 > 실패 공부!' 카테고리의 다른 글
[DP][C++] 백준 9095번 : 1,2,3 더하기 (0) | 2025.01.23 |
---|---|
[백준 16508 C++] 전공책 (0) | 2025.01.22 |