일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 715. Range Module
- data science
- DWG
- 운영체제
- 밴픽
- Substring with Concatenation of All Words
- Python Code
- Class
- attribute
- 43. Multiply Strings
- shiba
- 시바견
- concurrency
- kaggle
- 프로그래머스
- Decorator
- 컴퓨터의 구조
- 109. Convert Sorted List to Binary Search Tree
- 315. Count of Smaller Numbers After Self
- Generator
- Regular Expression
- Convert Sorted List to Binary Search Tree
- Python
- 30. Substring with Concatenation of All Words
- LeetCode
- t1
- Python Implementation
- 파이썬
- iterator
- Protocol
- Today
- Total
목록전체 글 (382)
Scribbling
1. 통신 1.1. 병렬 통신 - 말 그대로 신호선을 여러개 사용하는 통신 방식. 가격이 비싸서 요즘에는 잘 사용하지 않음. 1.2. 직렬 통신 - 신호선을 2개만 사용하는 통신 방식. 전형적으로는 시작 비트와 정지 비트 그리고 시분할 멀티플렉싱 방식을 사용함. 1.3. USB (Universial Serial Bus) - 병렬 통신 및 직렬 통신은 하나의 포트에 하나의 기기밖에 연결할 수 없다는 큰 단점을 가진다. 이를 해결하기 위해, 인터페이스를 통합하여 하나의 커넥터(or 포트)로 각종 주변기기를 연결할 수 있도록 한 것이 바로 USB이다. USB는 데이터 패킷 (Packet) 방식을 사용한다. 패킷은 마치 소포의 송장처럼 데이터가 어디에서 왔고, 어디로 가야하는지 등의 정보를 포함한다. 2. 네트..
Recursion solution. Time Complexity: O(N), Memory Complexity: O(1) # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]: return self.helper(head, k) def helper(self, node, k): if not node: return None cur = node for i in ran..
1. 컴퓨터 아키텍처: 컴퓨터의 여러 구성 요소를 배치하는 방법 - 프로세서 코어 (CPU): CPU = ALU + 레지스터 + 실행 장치 - 마이크로프로세서: 메모리와 I/O가 프로세서 코어와 같은 패키지에 들어 있지 않은 프로세서 - 마이크로컴퓨터: 메모리 및 I/O가 프로세서 코어와 같은 패키지에 들어 있는 프로세서 (e.g. 식기세척기의 컴퓨터) - 단일 칩 시스템(SOC): 다소 복잡한 마이크로컴퓨터 (e.g. WIFI SOC) 2. 함수(프로시저) 호출 흐름 함수를 호출하는 부분에서 함수를 실행한 후, 원래의 자리로 돌아올 필요가 있다. 이 때, 원래의 자리를 기억해야 한다. 3. 스택 재귀 함수가 제대로 동작하기 위해서는 반환 주소를 여럿 저장할 수 있어야 한다. 또한 함수에서 호출 지점으로..
class Solution: def generateParenthesis(self, n: int) -> List[str]: self.ret = [] self.helper(n, n, '') return self.ret def helper(self, l, r, path): if l == 0: self.ret.append(path + (')' * r)) return if l == r: self.helper(l-1, r, path + '(') else: self.helper(l-1, r, path + '(') self.helper(l, r-1, path + ')')
1. 컴퓨터 - 전자 부품을 다양하게 조합하여 비트를 조작하는 회로로, 메모리, 입출력, CPU로 나뉘어진다. - 32비트 컴퓨터는 보통 메모리를 4바이트 덩어리로, 64비트 컴퓨터는 8바이트 덩어리로 구성한다. 2. CPU 2.1. 산술 논리 장치 (ALU) - CPU의 핵심 장치로 산술 계산, 불리언 대수 및 기타 연산을 수행하는 방법을 알고 있는 장치. 2.2. 실행장치 (제어 장치) - 명령어: 어떤 일을 할지 알려주는 비트 패턴 - 프로그램 카운터: 명령어가 들어있는 메모리의 주소가 들어있는 카운터 - 실행 장치는 프로그램 카운터가 가리키는 주소에서 명령어를 fetch한다. - 누산기: ALU의 연산 결과를 임시로 보관하는 레지스터 2.3. 명령어 집합 구성 ㅣ모드 2비트ㅣㅣ명령코드 4비트ㅣㅣ주..
# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]: length = 0 cur = head while cur != None: length += 1 cur = cur.next prv, cur = None, head num_move = length - n while num_move > 0: prv = cur cur = cur.next num_move -..
class Solution: def fourSum(self, nums: List[int], target: int) -> List[List[int]]: ret = [] nums.sort() previ = None for i in range(len(nums)-3): if nums[i] == previ: continue prevj = None for j in range(i+1, len(nums)-2): if nums[j] == prevj: continue preSum = nums[i] + nums[j] l, r = j + 1, len(nums) - 1 while l < r: summation = preSum + nums[l] + nums[r] if summation < target: l += 1 elif su..
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개의 트랜지스터가 들어가며, 비싸지만 빠르다. 다만 집적도 문제로 큰 메모리로 사용하긴 어려..