일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Regular Expression
- Substring with Concatenation of All Words
- DWG
- 컴퓨터의 구조
- 715. Range Module
- attribute
- t1
- 파이썬
- 30. Substring with Concatenation of All Words
- 43. Multiply Strings
- 프로그래머스
- 운영체제
- LeetCode
- data science
- iterator
- Python
- 109. Convert Sorted List to Binary Search Tree
- Python Code
- Decorator
- shiba
- Convert Sorted List to Binary Search Tree
- kaggle
- Class
- Protocol
- 밴픽
- Generator
- 315. Count of Smaller Numbers After Self
- concurrency
- 시바견
- Python Implementation
- Today
- Total
목록Computer Science (392)
Scribbling
class Solution: def letterCombinations(self, digits: str) -> List[str]: if not digits: return [] ret_list = [] x = [ [], [], ['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'], ['j', 'k', 'l'], ['m', 'n', 'o'], ['p', 'q', 'r', 's'], ['t', 'u', 'v'], ['w', 'x', 'y', 'z'], ] def save_comb(digits, string): if not digits: ret_list.append(string) return char_list = x[int(digits[0])] for char in char_l..
class Solution: def threeSumClosest(self, nums: List[int], target: int) -> int: ret = int(1e9) nums.sort() for i in range(0, len(nums)-2): l = i + 1 r = len(nums) - 1 while l < r: now_sum = nums[i] + nums[l] + nums[r] if now_sum == target: return target elif now_sum < target: if abs(now_sum - target) < abs(ret - target): ret = now_sum l += 1 else: if abs(now_sum - target) < abs(ret - target): re..
1. 텍스트의 표현 - 아스키코드: 키보드에 있는 모든 기회에 대해 7비트의 수 값 할당 - 유니코드: 문자에 16비트 코드를 부여 - UTF-8: 유니코드 인코딩 방식 2. 논리 회로 - 디멀티플렉서(디먹스): 출력을 선택하는 논리 회로 - 셀렉터(먹스): 입력 중 한 입력을 선택하는 논리 회로 3. 메모리 3.1. 용어 - 플립플롭: 비트 하나를 기억하는 소자 - 주소 버스, 메모리 버스 3.2. 임의 접근 메모리 - RAM (Random Access Memory): 메모리 위치 중 어디든 원하는 순서로 읽거나 쓰기 가능하며, 일반적으로 휘발성 메모리이다. - SRAM (Static Ram): 각 비트에 약 6개의 트랜지스터가 들어가며, 비싸지만 빠르다. 다만 집적도 문제로 큰 메모리로 사용하긴 어려..
class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: nums.sort() N, ret = len(nums), [] for i in range(N): if i > 0 and nums[i] == nums[i-1]: continue target = -nums[i] l, r = i + 1, N - 1 while l target: r -= 1 else: l += 1 ..
Greedy하게... class Solution: def maxArea(self, height: List[int]) -> int: max_Area = 0 l = 0 r = len(height) - 1 while l height[l]: l = next_l break if next_l == len(height) - 1: break else: for next_r in range(r-1, -1, -1): if height[next_..
class Solution: def myAtoi(self, s: str) -> int: def delete_whitspace(s): idx = 0 while idx upper_limit: return upper_limit return num if len(s) == 0: return 0 s = delete_whitspace(s) if not s: return 0 first_char = s[0] if firs..
class Solution: def convert(self, s: str, numRows: int) -> str: if numRows == 1: return s board = [[] for _ in range(numRows)] denom = 2 * numRows - 2 for i, char in enumerate(s): remainder = i % denom if remainder < numRows: board[remainder].append(char) else: board[2 * numRows - remainder - 2].append(char) ret = '' for i in range(len(board)): for j in board[i]: ret += j return ret
1. 기본 자료구조 1.1 리스트: 가장 기초적인 자료 구조 - 특징: 추가 / 탐색 / 제거 등 대부분 O(N) list.count(obj): 요수 개수 list.index(obj): 요소 위치 idx list.insert(idx, obj) list.pop(idx): 마지막 요소 제거 및 반환 / 특정 요소 제거 및 반환 list.remove(obj) list.reverse(): list.sort(reverse=True): 기본 오름차순으로 정렬 1.2. Set: 중복을 허용하지 않음 - 특징: (파이썬) Set 자료구조는 Hash Table 구조로 O(1)로 탐색 가능 선언: set = set([1, 2, 3]) set.add(obj) set.update(list): set.remove(obj): o..
위상정렬을 이용한다. class Solution: def canFinish(self, numCourses: int, prerequisites: List[List[int]]) -> bool: indegrees = [0] * numCourses graph = [[] for _ in range(numCourses)] for v, u in prerequisites: graph[u].append(v) indegrees[v] += 1 q = [] for node, indegree in enumerate(indegrees): if indegree == 0: q.append(node) while q: u = q.pop() for v in graph[u]: indegrees[v] -= 1 if indegrees[v] =..
위상 정렬: 방향 그래프의 모든 노드를 '방향성에 거스르지 않도록' 순서대로 나열하는 알고리즘 def topology_sort(): result = [] q = deque() """ 진입 차수가 0인 node를 queue에 삽입 """ for i in range(1, v+1): if indegree_list[i] == 0: q.append(i) while q: now = q.popleft() result.append(now) """ queue에서 꺼낸 node와 연결된 모든 node 간의 간선을 제거 후 진입 차수가 0인 node를 queue에 삽입 """ for nxt in graph[now]: indegree_list[nxt] -= 1 if indegree_list[nxt] == 0: q.append..