일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 315. Count of Smaller Numbers After Self
- kaggle
- Generator
- Protocol
- LeetCode
- Class
- 프로그래머스
- Substring with Concatenation of All Words
- concurrency
- iterator
- attribute
- Decorator
- 컴퓨터의 구조
- Python
- t1
- 시바견
- 운영체제
- 715. Range Module
- 43. Multiply Strings
- 파이썬
- DWG
- Convert Sorted List to Binary Search Tree
- shiba
- 밴픽
- Python Code
- Python Implementation
- data science
- 30. Substring with Concatenation of All Words
- 109. Convert Sorted List to Binary Search Tree
- Regular Expression
- Today
- Total
목록시바견 (121)
Scribbling
BFS하면서 기록해준다. from collections import deque # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: if not root: return [] ret = [] q = deque() q.append((root, 0)) while q: cur_node, cur_level = q.popleft() ..
Generator를 이용한 해법 def solution(answers): def gen1(): candidates = [1, 2, 3, 4, 5] while True: for candidate in candidates: yield candidate def gen2(): candidates = [2, 1, 2, 3, 2, 4, 2, 5] while True: for candidate in candidates: yield candidate def gen3(): candidates = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] while True: for candidate in candidates: yield candidate g1 = gen1() g2 = gen2() g3 = gen3() ans..
x * y = brown + yellow (x-2) * (y-2) = yellow --> 모든 정수 조합 완전 탐색 def solution(brown, yellow): answer = [] xy_product = brown + yellow candidates = [] for i in range(1, xy_product//2+1): if xy_product % i == 0: candidates.append((xy_product//i, i)) for candidate in candidates: if (candidate[0]-2) * (candidate[1]-2) == yellow: return candidate
def solution(numbers): def is_prime(number): if number == 1: return False i = 2 while i * i
딱 봐도 정렬 후 Binary Search하면 된다. 매번 그렇듯 프로그래머스 지문은 극혐이다. from bisect import bisect_left def solution(citations): answer = 0 citations.sort() l, r = 0, citations[len(citations) - 1] while l = mid: answer = max(answer, mid) l = mid + 1 else: r = mid - 1 return answer
import heapq def solution(operations): answer = [] h = [] for operation in operations: opt, num = operation.split(' ') if opt == 'I': heapq.heappush(h, int(num)) else: if num == '-1': if h: heapq.heappop(h) # 최대 값 삭제 else: if h: h.pop(h.index(max(h))) heapq.heapify(h) if not h: return [0, 0] else: return [max(h), h[0]] return answer
Priority Queue를 이용하면 쉽게 풀 수 있다. 알고리즘은 '대기 큐에 들어온 Task 중 수행 시간이 가장 짧은 Task를 먼저 처리한다'가 답이다. 이는 운영체제 CPU 스케줄링 방식 중 하나인 SJF (Shortest Job First)와 유사하다. SJF가 궁금하다면, https://focalpoint.tistory.com/96?category=918151 쉽게 배우는 운영체제 내용 정리 - Chapter 04 CPU 스케줄링 1. 스케줄링 CPU 스케줄링은 CPU에 어떤 작업을 배정할지 결정하는 것이다. 컴퓨터 시스템의 효율은 이에 따라 달라진다. 앞서 배운 것 처럼, 프로세스는 생성 상태, 준비 상태, 실행 상태, 대기 상 focalpoint.tistory.com import heap..
import heapq import copy def solution(scoville, K): answer = 0 h = copy.deepcopy(scoville) heapq.heapify(h) while len(h) >= 2 and h[0] = K: return answer else: return -1
근본 없는 문제다. 도저히 지문을 이해할 수 없게 적어놨다. def solution(prices): answer = [i for i in range(len(prices)-1, -1, -1)] stack = [] for i in range(len(prices)): p = prices[i] if not stack or p >= stack[-1][0]: stack.append((p, i)) else: while stack and stack[-1][0] > p: bef_p, bef_i = stack.pop() answer[bef_i] = i - bef_i stack.append((p, i)) return answer
from collections import deque def solution(bridge_length, weight, truck_weights): time, total_weight = 1, 0 q = deque() truck_weights = deque(truck_weights) while truck_weights: if not q: w = truck_weights.popleft() q.append([time, w]) total_weight += w else: if q[0][0] + bridge_length == time: total_weight -= q[0][1] q.popleft() w = truck_weights[0] if total_weight + w