[leetcode] 42.Trapping Rain Water (백준 14719 빗물)

2022. 9. 19. 08:51·Algorithm (PS)
728x90

https://leetcode.com/problems/trapping-rain-water/

 

Trapping Rain Water - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

백준에도 빗물이라는 문제가 있는데 동일하다 

https://www.acmicpc.net/problem/14719

 

14719번: 빗물

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

www.acmicpc.net

이거 well-known 이라며 그래서 나도 전에 한번 풀었던 것 같은데 또 다시 푸니까 어렵다 ㅋㅋ

여러가지 풀이가 있지만, 투포인터 활용하는 방법으로 푸는게 좀 더 이해가 잘 되었다 

left, right 포인터를 각각 맨 끝에서부터 이동시키면서, max_left와 max_right 값을 찾고 현재 height[left], height[right]와의 높이 차이를 volume에 더해 나간다 
그림으로 생각하면 좀 이해가 된다 

그림에서 max_left는 현재 1이고, left 포인터가 가리키는 height는 0이다 


따라서 max_left - height[left] 는 지금까지 중에서의 최대 높이와 현재 가리키는 지점의 높이 차이를 의미하며 핑크색으로 칠해진 빗물이 쌓이는 volume에 대한 값을 구할 수 있다 

이를 반복하여 volume에 더해나간다 

class Solution:
    def trap(self, height: List[int]) -> int:
        left = 0 
        right = len(height) - 1
        max_left = height[left]
        max_right = height[right]
        volume = 0 
        while left < right:
            max_left = max(max_left, height[left])
            max_right = max(max_right, height[right])
            
            if max_left <= max_right:
                volume += max_left - height[left]
                left += 1
            else:
                volume += max_right - height[right]
                right -= 1
        return volume
728x90

'Algorithm (PS)' 카테고리의 다른 글

정보처리기사/실기 - 보안 약점  (0) 2022.09.19
백준 25591 푸앙이와 종윤이 Python  (0) 2022.09.19
백준 1244 스위치 켜고 끄기 / 구현  (0) 2022.09.18
[백준] 2212 센서 Python 그리디 풀이  (0) 2022.09.18
merge sort snippet  (0) 2022.09.15
'Algorithm (PS)' 카테고리의 다른 글
  • 정보처리기사/실기 - 보안 약점
  • 백준 25591 푸앙이와 종윤이 Python
  • 백준 1244 스위치 켜고 끄기 / 구현
  • [백준] 2212 센서 Python 그리디 풀이
minjiwoo
minjiwoo
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minjiwoo
minji's engineering note
minjiwoo
전체
오늘
어제
  • 분류 전체보기 (613)
    • Data Engineering (42)
      • Apache Spark (11)
      • Databricks & Delta Lake (9)
      • Airflow (3)
      • SQL (6)
      • Trouble Shooting (2)
      • Hadoop (2)
      • MLOps (1)
    • Cloud Engineering (104)
      • AWS (23)
      • Linux 🐧 (29)
      • Docker 🐳 (21)
      • Kubernetes ⚙️ (20)
      • Ansible (10)
    • Computer Science (87)
      • 네트워크 (9)
      • 운영체제 (25)
      • 정보처리기사 (48)
      • CS 기술 면접 스터디 (3)
    • Programming Languages (27)
      • Python (17)
      • C와 C++ (10)
    • Backend (5)
      • Django (2)
    • 프로젝트 (2)
      • 테크포임팩트 (2)
    • iOS (11)
      • 레이블러리 (2)
    • Algorithm (PS) (275)
      • LeetCode (6)
    • 개발일기 (30)
      • 내돈내산 후기🎮 (3)
      • 개발자 취준생 (5)
      • Today I Learned (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Hi there

인기 글

태그

  • 프로그래머스
  • docker
  • dp
  • 백트래킹
  • 스파크
  • 카카오코딩테스트
  • 데이터엔지니어
  • 파이썬
  • 운영체제
  • 데이터브릭스
  • 백준
  • python
  • 빅데이터
  • 데이터엔지니어링
  • 쿠버네티스
  • Swift
  • Kubernetes
  • BFS
  • SPARK
  • ansible
  • dfs
  • Leetcode
  • linux
  • 알고리즘
  • 리눅스
  • EC2
  • 코딩테스트
  • 클라우드
  • AWS
  • Databricks

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
minjiwoo
[leetcode] 42.Trapping Rain Water (백준 14719 빗물)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.