목차

    Algorithm(알고리즘)/Brute Force

    3) 물이 담길수 있는 양 출력 함수

    고로케 2021. 5. 13.

    목차

      반응형

      3. 물이 담길수 있는 양 출력 함수

      def trapping_rain(buildings):
          # 총 담기는 빗물의 양을 변수에 저장
          total_height = 0
      
          # 리스트의 각 인덱스을 돌면서 해당 칸에 담기는 빗물의 양을 구한다
          # 0번 인덱스와 마지막 인덱스는 볼 필요 없다
          for i in range(1, len(buildings) - 1):
              # 현재 인덱스를 기준으로 양쪽에 가장 높은 건물의 위치를 구한다
              max_left = max(buildings[:i])
              max_right = max(buildings[i:])
      
              # 현재 인덱스에 빗물이 담길 수 있는 높이
              upper_bound = min(max_left, max_right)
      
              # 현재 인덱스에 담기는 빗물의 양을 계산
              # 만약 upper_bound가 현재 인덱스 건물보다 높지 않다면, 현재 인덱스에 담기는 빗물은 0
              total_height += max(0, upper_bound - buildings[i])
      
          return total_height
      
      
      # 테스트
      print(trapping_rain([3, 0, 0, 2, 0, 4]))
      print(trapping_rain([0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1]))

      결과 : 10 6

      3) 물이 담길수 있는 양 출력 함수
      1번 리스트
      3) 물이 담길수 있는 양 출력 함수
      2번 리스트




      반응형

      댓글