2개의 이상의 사건이 동시에 일어날 확률을 말한다. 서로 다른 사건 X와 Y가 있을 때 두 사건이 동시에 일어날 확률은 P(X, Y) 또는 P(X ∩ Y)로 나타낸다. 이 때, 사건 X와 Y는 독립 사건 (Independent)여야 한다. 종속 사건 (Dependent) 일 시엔 사용이 불가하다. 참고 - https://velog.io/@claude_ssim/%ED%99%95%EB%A5%A0%ED%86%B5%EA%B3%84-Joint-Probability-Marginal-Probability-Conditional-Probability - https://excelsior-cjh.tistory.com/193
정규식은 흔히 'regex' 나 'regexp'로도 약칭이 되는 string을 처리하는 강력한 도구 중 하나다. 정규식인 문자열을 식별하고 조작하기 위한 간결하고 유연한 수단이다. Python의 re 모듈은 정규 표현식으로 작업할 수 있는 함수와 클래스를 제공하고, 다음은 몇 가지 기본 사항이다. 1. 기본 패턴 (Basic Patterns) 'a', 'X', '9' - 일반 문자는 그 자체로 매칭 '.' - 줄바꿈을 제외한 모든 문자 매칭 '\w' - 단어 문자와 매칭 ('[a-zA-Z0-9_]'와 동일) '\W' - 단어가 아닌 문자와 매칭 '\d' - 숫자를 매칭 ('[0-9]'와 동일) '\D' - 숫자가 아닌 문자와 매칭 '\s' - 공백 문자와 매칭 (공백, 탭, 개행 등) '\S' - 공백이..
우선 re.split(pattern, string) 을 분석해보자. 1. re : Python의 정규식 (regular expression) 모듈로 쉽게 얘기하면 패턴(pattern)을 인식할 때 용이한 함수와 클래스를 제공한다. 2. re.split(pattern, string) : 본격적으로 re.split() 함수를 알아보자면, 주어진 'string'을 'pattern'과 일치하는 부분을 기준으로 쪼개준다. 사용시에는 'import re'를 먼저 선언해줘야 하며, 아래 예시를 살펴보자. import re text = "CHAPTER 1: Intro to the story. CHAPTER 2: The journey begins." pattern_ = r'CHAPTER' output = re.split..
numpy.ones 함수는 '1'로 채워진 array를 생성할 때 사용된다. size(크기)와 shape(모양)은 매개변수를 어떻게 주느냐에 따라 결정된다. 하나씩 살펴보자. 'numpy.ones(shape, dtype=None, order = 'C')' shape: 하나 또는 연속되는 Integer를 통해 array의 shape을 정의한다. 예를 들어, (2, 3)이 주어진다면 2x3의 matrix가 생성된다. dtype: 데이터 타입을 설정하는 것으로 default는 'float64' order: 다차원의 데이터를 row-major(행, C-style), column-major(열, Fortran-style) 중 어떤 방식으로 저장할 것인지 결정한다. 사용 예시는 아래와 같다. 5의 길이를 갖는 1D..
가장 간단한 구현은 두 개의 array(list)를 첫 번째 array인 nums1으로 합친 후 정렬을 해주면 된다. 이 때는 시간 복잡도가 O (n log n) 이지만, Two Pointers (투 포인터)를 활용하면 O (n) 으로 두 개의 index를 각각 두고 각각의 element (요소)를 비교해가며 정렬된 array로 만들면 더 빠르게 구현이 가능하다. 1. 시간 복잡도: O (n log n) class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: for i in range(n): nums1[m+i] = nums2[i] nums1.sort() 2. 시간 복잡도: O (n) class ..
26번 문제와 마찬가지로 in-place 즉, input으로 주어진 nums를 직접 변경해야한다. val과 같은 값의 element가 주어지면 del 을 통해 하나씩 삭제해 나가면 정답을 어렵지 않게 구현할 수 있다. class Solution: def removeElement(self, nums: List[int], val: int) -> int: i = 0 while i < len(nums): if nums[i] == val: del nums[i] else: i += 1 return len(nums)
in-place 즉, input으로 주어진 nums의 값을 변경해야하는 것이 중요한 포인트 중 하나다. unique한 element를 집어주는 index (i)가 필요하고, 전제 nums에서 어디까지 진행했는지를 추적해주는 또 다른 index (j)를 두고 nums의 길이만큼 반복문을 실행하면 어렵지 않게 구현이 가능하다. class Solution: def removeDuplicates(self, nums: List[int]) -> int: if not nums: return 0 i = 0 for j in range(1, len(nums)): print(i, j, nums[i], nums[j], nums) if nums[j] != nums[i]: i += 1 nums[i] = nums[j] return..
거듭제곱 함수를 직접 구현하는 방법을 생각해보는 건 의미있다고 생각하지만, Constraints 때문에 오랜 시간이 걸렸다. 특히 Test Case를 생성해 확인해보는 과정 중에 'expected 'x^n' to have value from -10000 to 10000 only'라는 에러가 여러번 나왔는데 말 그대로 x^n이 10^4을 넘거나 -10^4 이하가 되지 않는다는 의미다. 이외에 문제를 구현하는 과정에 고민해볼 부분은 Time Limit Exceeded다. n이 매우 클 수 있기 때문에 O(n)으로 구혀하는 것은 시간 복잡도 측면에서 매우 좋지 못하다. 이진법을 활용해 구현하면 O(log n)으로 구현이 가능하다. 곱해야하는 수 x를 자리수가 늘어날 때마다 x를 계속 곱해 구현이 가능하다. e..
알고리즘 문제를 풀던 중 문제에 해당 문제는 Interactive Problem라는 설명이 있었고, 이 문제 유형에서 어려움을 겪어 Interactive Problem이 무엇인지 알아봤다. Interactive Problem는 실행 과정에서 작성자의 프로그램(코드)이 주어진 문제(흔히 judge라고 한다)와 상호 작용해야 하는 유형이다. 단순히 표준 입력을 읽고 표준 출력을 하는 대신, 작성자의 코드는 judge와 오가며 소통을 하게 된다. 예를 들면 아래와 같다. judge만 알고 있는 숫자 x가 있고, 문제를 푸는 사람은 못한다고 가정해보자. 그리고 judge는 x가 1에서 100 사이의 int(정수)라는 것만 알려준다. 각 단계에서 작성자는 이를 추측해 y라는 숫자를 제시하면, judge는 이 숫자..
다른 함수들은 모두 간단히 구현이 가능하지만 top을 어떻게 구현하느냐에 따라 효율이 달라진다. list를 heap로 구성하는 heapify를 통해 max heap을 구현후 하나씩 pop하는 방식을 활용해 K개의 가장 높은 점수를 더해 반환했다. import heapq class Leaderboard: def __init__(self): self.dic = defaultdict(int) def addScore(self, playerId: int, score: int) -> None: self.dic[playerId] += score def top(self, K: int) -> int: ret = 0 values = list(self.dic.values()) n_values = [-val for val i..
- Total
- Today
- Yesterday
- 티스토리챌린지
- 오블완
- Android
- min heap
- 안드로이드
- socket programming
- 투 포인터
- Hash Map
- 소켓 프로그래밍
- DICTIONARY
- I2C
- defaultdict
- vertex shader
- C++
- Computer Graphics
- tf-idf
- 이코노미스트
- 딕셔너리
- java
- 리트코드
- Python
- ml
- 파이썬
- 이코노미스트 에스프레소
- machine learning
- 머신 러닝
- leetcode
- The Economist
- join
- The Economist Espresso
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |