From 1749be74f74544a2860bd30df8614b3fc279a8f6 Mon Sep 17 00:00:00 2001 From: 724thomas <724thomas@gmail.com> Date: Tue, 12 May 2026 22:32:47 +0900 Subject: [PATCH] =?UTF-8?q?[=EC=B5=9C=EC=9B=90=EC=A4=80]=20Day12?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../799. Champagne Tower.py" | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 "leetcode3/\354\265\234\354\233\220\354\244\200/799. Champagne Tower.py" diff --git "a/leetcode3/\354\265\234\354\233\220\354\244\200/799. Champagne Tower.py" "b/leetcode3/\354\265\234\354\233\220\354\244\200/799. Champagne Tower.py" new file mode 100644 index 00000000..357c78df --- /dev/null +++ "b/leetcode3/\354\265\234\354\233\220\354\244\200/799. Champagne Tower.py" @@ -0,0 +1,32 @@ +# + +''' +1. 아이디어 : +맨위에 poured 만큼 저장하고 1을 뺀 만큼 아래로 나머지를 /2 보냅니다. + +2. 시간복잡도 : + O(100 * 100) + +3. 자료구조/알고리즘 : +2차원 배열 / DP + +''' + + +class Solution: + def champagneTower(self, poured: int, query_row: int, query_glass: int) -> float: + glasses = [[0.0] * 101 for a in range(101)] + glasses[0][0] = poured + + for row in range(query_row): + for col in range(row+1): + left_over = glasses[row][col]-1 + + if left_over > 0: + glasses[row+1][col] += left_over/2 + glasses[row+1][col+1] += left_over/2 + + glasses[row][col] = 1 + + target = glasses[query_row][query_glass] + return target if target < 1 else 1 \ No newline at end of file