diff --git "a/leetcode3/\353\263\200\354\247\200\355\230\221/v3/835. Image Overlap.py" "b/leetcode3/\353\263\200\354\247\200\355\230\221/v3/835. Image Overlap.py" new file mode 100644 index 00000000..e8fb718e --- /dev/null +++ "b/leetcode3/\353\263\200\354\247\200\355\230\221/v3/835. Image Overlap.py" @@ -0,0 +1,52 @@ +''' +1. 아이디어: +문제에 나와있는대로 img1을 전부 하나씩 이동하면서 최대값을 찾음. +2. 시간복잡도: +o(m*2*n*2*(m*n*2)) +3. 알고리즘: +완전탐색 +''' +class Solution: + def move(self, img, dx, dy): + m = len(img[0]) + n = len(img) + + ones = [] + for y in range(n): + for x in range(m): + if img[y][x] == 1: + ones.append((x,y)) + + tmp = [[0] * m for _ in range(n)] + while ones: + x,y = ones.pop() + + if 0 <= x+dx < m and 0 <= y+dy < n: + tmp[y+dy][x+dx] = 1 + + return tmp + + def overlay(self, lst1, lst2): + n = len(lst1[0]) + m = len(lst1) + tmp = 0 + for y in range(m): + for x in range(n): + if lst1[y][x] == 1 and lst2[y][x] == 1: + tmp += 1 + + return tmp + + def largestOverlap(self, img1: list[list[int]], img2: list[list[int]]) -> int: + print(self.overlay(self.move(img1,1,1), img2)) + + n = len(img1[0]) + m = len(img1) + tmp = 0 + for dx in range(-m, m +1): + for dy in range(-n, n+ 1): + num = self.overlay(self.move(img1,dx,dy), img2) + if num > tmp: + tmp = num + + return tmp \ No newline at end of file diff --git "a/leetcode3/\353\263\200\354\247\200\355\230\221/v3/860. Lemonade Change.py" "b/leetcode3/\353\263\200\354\247\200\355\230\221/v3/860. Lemonade Change.py" new file mode 100644 index 00000000..0d4afda2 --- /dev/null +++ "b/leetcode3/\353\263\200\354\247\200\355\230\221/v3/860. Lemonade Change.py" @@ -0,0 +1,31 @@ +''' +1. 아이디어: +문제에 나와있는대로 구현하면 됨. +2. 시간복잡도: +o(n) +3. 알고리즘: +''' +class Solution: + def lemonadeChange(self, bills: list[int]) -> bool: + wallet = {5: 0, 10: 0} + + for bill in bills: + if bill == 5: + wallet[5] += 1 + elif bill == 10: + wallet[5] -= 1 + wallet[10] += 1 + + if wallet[5] == -1: + return False + else: + if wallet[10] >= 1 and wallet[5] >= 1: + wallet[10] -= 1 + wallet[5] -= 1 + elif wallet[5] >= 3: + wallet[5] -= 3 + else: + return False + + return True + \ No newline at end of file