분류 전체보기
-
[CSS] mix-blend-mode 의 사용법 , differenceCSS 2022. 6. 26. 22:46
안녕하세요. gaki 입니다. 오늘은 mix-blend-mode 에 대해서 알아보겠습니다. mix-blend-mode 란, 자식이나 부모의 색깔에 따라서 본인의 색깔을 바꿀 수 있는 css 입니다. 이 속성에 대해서 알아보게된 계기는 https://www.martinbriceno.com/ 여기 웹사이트를 보다가 마우스 커서 주위에 생기는 원의 색깔이 페이지의 배경색깔에 따라서 바뀌는 것에 대한 이유를 찾다가 알게되었습니다. 원의 색깔이 배경색이 하얀색이면 검은색으로, 배경색이 검은색이면 하얀색으로 바뀌는걸 볼 수 있습니다. 이러한 효과를 간단하게 mix-blend-mode 로 구현할 수 있습니다. 이 효과를 구현하기 위해서 mix-blend-mode 의 difference 속성을 이용할 것입니다. dif..
-
[LeetCode] 1354. Construct Target Array With Multiple Sums알고리즘 2022. 6. 24. 17:55
import heapq class Solution: def isPossible(self, target: List[int]) -> bool: heapq._heapify_max(target) s = sum(target) while (target[0] != 1): sub = s- target[0] if (sub >= target[0] or sub == 0): return False iterNum = max( ((target[0]-1) // sub),1) temp = target[0] - (sub * iterNum) if (temp < 1): return False v = heapq._heapreplace_max(target, temp) s = sum(target) return True
-
[LeetCode] 90. Subsets II알고리즘 2022. 6. 22. 20:23
class Solution: def subsetsWithDup(self, nums: List[int]) -> List[List[int]]: ret = [] n = len(nums) nums = sorted(nums) def rec(length, subset, items): if (len(subset) == length): if ((subset) not in ret): ret.append((subset)) return ; if (items == []): return ; for i in range(len(items)): rec(length, subset + [items[i]], items[i+1:]) for length in range(n + 1): rec(length, [], nums[:]) return ..
-
오브젝트 풀링 [펌]Html Canvas 2022. 6. 22. 01:52
출처: https://notyu.tistory.com/m/64 1. 오브젝트 풀링(Object pooling) 오브젝트 풀링은 개체를 할당하고 파괴하는 대신, 미리 오브젝트 집합(Object Pool)을 생성하고, 필요할 때에 불러와 사용하고, 사용한 개체를 다시 개체 집합에 반환하여, 개체들을 재사용하는 디자인 패턴 중의 하나이다. 오브젝트 풀링은 미리 생성된 개체를 재사용하므로 개체를 생성하고, 파괴하는데 드는 시간 및 비용의 낭비를 줄일 수 있다. 오브젝트의 생성 및 파괴는 자원의 낭비가 심하다. 게다가, 오브젝트의 파괴는 가비지 컬렉션(Garbage Collection )을 호출하게 된다. 가비지 컬렉션은 시스템에서 자동으로 호출되며, 수집 과정은 상당한 CPU 시간을 요구한다. 최적화와 관련된 ..
-
[LeetCode] 438. Find All Anagrams in a String알고리즘 2022. 6. 21. 21:43
from collections import Counter class Solution: def findAnagrams(self, s: str, p: str) -> List[int]: C = Counter(p) length = len(p) n = len(s) left = 0 right = length - 1 Temp = Counter(s[left: right + 1]) ret = [] while (right < n): if (Temp == C): ret.append(left) if (right == n - 1): return ret Temp[s[left]] -= 1 left += 1 right += 1 Temp[s[right]] += 1
-
Manacher's Algorithm [가장 긴 펠렌드롬 찾기]알고리즘 2022. 6. 20. 21:03
안녕하세요. gaki 입니다. 오늘은 가장 긴 펠렌드롬을 O(N) 의 시간복잡도로 찾을 수 있는 Manacher's 알고리즘에 대해서 이야기 해보겠습니다. 1. O(N^2) 으로 가장 긴 펠렌드롬 찾는 방법 2. Manacher's 알고리즘의 접근 방법 3. LeetCode 문제풀이 1. O(N^2) 으로 가장 긴 펠린드롬을 찾는 방법 먼저 Manacher's 알고리즘에 대해서 알아보기 전에, 이 알고리즘이 왜 유용한지에 대해서 설명해보겠습니다. babad 위와 같은 문자열이 있다고 가정해봅시다. 이 문자열에서 가장 긴 펠렌드롬을 찾으려면 어떻게 해야할까요? 아니, 그 전에 펠렌드롬이 뭔지 알아야겠죠? 펠렌드롬은 거꾸로 뒤집어도 원래의 문자열과 같은 문자열을 의미합니다. 가령, ABBCBBA 라는 문자열..