전체 글 102

[미적분] 5 Vector Calculus ~ 5.1 Differentiation of Univariate Functions

공부하는 단계에서 정리한 내용입니다.잘못된 내용이 있다면 말씀해주시면 감사하겠습니다.https://mml-book.github.io/book/mml-book.pdf 5 Vector Calculus머신러닝은 결국 좋은 파라미터를 찾아서 모델 성능을 높이는 과정이고,이것은 vector calculus를 활용해서 함수 최적화 문제로 바꿔서 접근할 수 있다.아래는 vector calculus로 해결할 수 있는 함수 최적화 문제들의 예시이다.  이번 장에서는 함수를 중심으로 다룬다.함수 $f$는 입력$(x \in \mathbb R^D)$을 받아서 출력($f(x)$)을 하는 것이라고 할 수 있다.입력 공간을 domain, 출력 공간을 image/codomain이라고 부르고, 따로 명시되지 않으면 실수값으로 한정한다..

선형대수 2025.03.31

[프로그래머스] 올바른 괄호 (파이썬, 시간초과- 리스트 대신 디큐)

[문제] 문제 설명괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다.예를 들어- "()()" 또는 "(())()" 는 올바른 괄호입니다.- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.제한사항- 문자열 s의 길이 : 100,000 이하의 자연수- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 입출력 예sanswer"()()"true"(())()"true")()("false"(()("false  [내 풀이]처음 풀..

코테 오답노트 2025.03.27

[선형대수] Exercise 4.7 ~ 4.12

공부하는 단계에서 정리한 내용입니다.잘못된 내용이 있다면 말씀해주시면 감사하겠습니다.https://mml-book.github.io/book/mml-book.pdf 4단원 연습문제를 풀었다갈수록 재밌어진다누가 날 묶어두고 수학만 풀라고 했으면 좋겠다 (그렇다고 잘하는 건 아님) 4.7Diagonalizability 판별한 뒤가능하면 diagonal form하고 basis 행렬을 구하고, 불가능하면 이유를 설명하는 문제였다.역시나 $4 \times 4$ 크기 행렬의 eigenvalue를 계산하는 것이 쉽지 않았다.  4.8SVD 구하는 문제였다.  4.9얘도 SVD 구하는 문제였다.  4.104.8에서 구한 $A$의 SVD를 바탕으로 rank-1 approximation을 구해보는 문제였다. 4.11$AA..

선형대수 2025.03.24

[선형대수] Ex 4.1 ~ 4.6

공부하는 단계에서 정리한 내용입니다.잘못된 내용이 있다면 말씀해주시면 감사하겠습니다.https://mml-book.github.io/book/mml-book.pdf 4단원 연습문제를 풀었다갈수록 재밌어진다누가 날 묶어놓고 수학만 풀라고 했으면 좋겠다 (그렇다고 잘하는 건 절대 아님) 4.1그냥 Laplace하고 Sarrus 적용해서 determinant 구하는 문제였다.   4.2Determinant를 효율적으로 계산해보는 문제였다.$5 \times 5 $크기의 행렬이므로 Laplace나 Sarrus를 쓰기는 쉽지 않을 것이다.가우스 소거법을 적용해서 대각원소들을 곱하는 방법을 사용했다.  4.3그냥 eigenspace 계산문제였다.  4.4얘도 eigenspace 계산문제였다.$4 \times 4$ 행..

선형대수 2025.03.22

[프로그래머스] 유연근무제 (파이썬, 테케 생각 잘한 게 뿌듯해서 기록함)

[문제]7일 중 평일에 직원이 스스로 설정한 시간 안에 잘 출근을 했는지 확인하는 문제였다.  [내 코드]내 코드는 아래와 같다.1. 토, 일 기록을 아예 제외해주고 (예외: startday가 7인 경우)2. 커트라인 시간을 설정해주고 (예외: schedules의 분단위가 50~59인 경우)3. 각 직원별로 만족여부를 판별해줬다.def solution(schedules, timelogs, startday): answer = 0 for i in range(len(schedules)): # 토,일 기록 제외 if startday == 7: timelogs[i].pop(6) timelogs[i].pop(0) else: ..

코테 오답노트 2025.03.21

[선형대수] 4.7 Matrix Phylogeny ~ 4.8 Further Reading

공부하는 단계에서 정리한 내용입니다.잘못된 내용이 있다면 말씀해주시면 감사하겠습니다.https://mml-book.github.io/book/mml-book.pdf 4.7 Matrix Phylogeny아래는 행렬의 phylogeny(생물의 진화 과정과 그 관계를 나타내는 방법)이다.맨 위의 Real matrices에서부터 보면 된다.(검은 화살표: 부분집합 관계/ 파란 글씨: 수행할 수 있는 연산)(+ Non-singular 행렬과 non-defective 행렬은 다르다!  e.g. 회전행렬 $R = \begin{bmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{bmatrix}$    $\rightarrow$  invertible..

선형대수 2025.03.20

[선형대수] 4.6 Matrix Approximation

공부하는 단계에서 정리한 내용입니다.잘못된 내용이 있다면 말씀해주시면 감사하겠습니다.https://mml-book.github.io/book/mml-book.pdf 4.6 Matrix Approximation지금까지 행렬 $A$를 $A = U \Sigma V^{\top}$으로 분해시키는 방법에 대해서 알아봤다.이제 $A$ SVD로 전체 분해하는 방법 대신에, low-rank 행렬 $A_i$들의 합으로 나타내는 방법을 알아볼 것이다.SVD를 전체 분해할 때보다 계산 비용이 적게 든다!  $m \times n$ 행렬 $A$는 아래와 같이 rank-1 행렬들의 합으로 나타낼 수 있다.$$A = \sum_{i=1}^r \sigma_i u_i {v_i}^{\top}$$$u_i$와 ${v_i}^{\top}$는 각각..

선형대수 2025.03.19

[프로그래머스] 지폐 접기 (파이썬, 예시 테게에 없는 테케도 생각하기)

[문제]지폐를 몇 번 접어야 지갑에 들어가는지를 구하는 문제였다.  [내 코드]처음 내 코드이다.Bill의 최댓값을 2로 나눈 몫과 bill의 최솟값을 bill로 설정하고 answer(횟수)를 1 올려줬다.만약에 bill의 최댓값이 wallet의 최댓값보다 작거나 같고, bill의 최솟값이 wallet의 최촛값보다 작거나 같으면 for문을 멈추고 답을 냈다. 나름 머리를 쓴다고 range를 16으로 설정했다. Bill값이 2,000 이하니 아무리 많이 접어도 16번이기 때문이다.def solution(wallet, bill): answer = 0 for i in range(16): bill = [max(bill) // 2, min(bill)] answer += 1 ..

코테 오답노트 2025.03.18

[선형대수] 4.5.3 Eigenvalue Decomposition vs. Singular Value Decomposition

공부하는 단계에서 정리한 내용입니다.잘못된 내용이 있다면 말씀해주시면 감사하겠습니다.https://mml-book.github.io/book/mml-book.pdf 4.5.3 Eigenvalue Decomposition vs. Singular Value DecompositionEiegendecomposition $A = PDP^{-1}$과 SVD $A = U \Sigma V^{\top}$에 대해서 복습을 해보자. [Existance]• SVD는 항상 존재한다.  하지만 eigendecomposition은 정사각행렬에만 적용할 수 있고, $\mathbb R^n$의 eigenvector들의 basis를 찾을 수 있을 때만 존재한다. [Orthogonality]• Eigendecomposition 행렬 $P$..

선형대수 2025.03.17

[선형대수] 4.5.2 Construction of the SVD

공부하는 단계에서 정리한 내용입니다.잘못된 내용이 있다면 말씀해주시면 감사하겠습니다.https://mml-book.github.io/book/mml-book.pdf 4.5.2 Construction of the SVD이번 section에서는 왜 SVD가 항상 존재하는지, 그리고 SVD를 어떻게 계산하는지에 대해서 알아볼 것이다. SVD는 정사각행렬의 eigendecomposition과 비슷한 면이 있다. Remark.SPD(symmetric positive definite) 행렬 $S$의eigendecomposition은 $S = S^{\top} = PDP^{\top}$이고SVD는 $S = U \Sigma V^{\top}$ 이다.만약 $U = P = V$이고 $D = \Sigma$ 일 때 eigendec..

선형대수 2025.03.16

[선형대수] 4.5 Singular Value Decomposition ~ 4.5.1 Geometric Intuitions for the SVD

공부하는 단계에서 정리한 내용입니다.잘못된 내용이 있다면 말씀해주시면 감사하겠습니다.https://mml-book.github.io/book/mml-book.pdf 4.5 Singular Value Decomposition선형대수에서 SVD(singular value decomposition)는 중요한 matrix decomposition 방법이다.모든 행렬에 적용할 수 있고, 항상 존재하기 때문이다.그리고 SVD를 통해서 선형변환 $\phi: V \rightarrow W$이 벡터 공간의 구조를 어떻게 바꾸는지 기하학적으로 설명할 수 있다.   Theorem 4.22 (SVD Theorem)$m \times n$ 행렬 $A$가 있을 때, $A$의 SVD 공식은 아래와 같다.$$A = U \Sigma V^..

선형대수 2025.03.15

[프로그래머스] 소수 만들기 (파이썬, 최적화)

[문제]주어진 숫자중에 3개를 더했을 때 소수가 되는 경우의 수를 세는 문제였다.   [기존 코드]숫자 3개를 뽑아서 더하고 리스트에 추가한 다음, 리스트에 있는 숫자들이 소수인지 판별해주었다.i == 3 일 때는 별도로 처리해주었다.def solution(nums): # 숫자 3개 뽑아서 더하기 t = len(nums) lst = [] for i in range(t): for j in range(i+1,t): for k in range(j+1,t): lst.append(nums[i]+nums[j]+nums[k]) # 소수 판별 answer = 0 for i in lst: ..

코테 오답노트 2025.03.14

[선형대수] 4.3 Cholesky Decomposition ~ 4.4 Eigendecomposition and Diagonalization

공부하는 단계에서 정리한 내용입니다.잘못된 내용이 있다면 말씀해주시면 감사하겠습니다.https://mml-book.github.io/book/mml-book.pdf 4.3 Cholesky Decomposition행렬도 분해할 수 있다.여러 가지 방법이 있는데 우리는 Cholesky decomposition/ Cholesky factorization에 대해서 알아볼 것이다.(숫자에서의 제곱근처럼 행렬을 분해하는 방법이라서 symmetric, positive definite 한 행렬에만 적용할 수 있음)  Theorem 4.18 (Cholesky Decomposition)Symmetric하고 positive definite한 행렬 $A$는 $A = LL^{\top}$으로 분해할 수 있다.여기서 $L$을 $A..

선형대수 2025.03.13

[프로그래머스] 공원 산책 (파이썬, 예시 테케에 없는 테케도 생각하기)

[문제]격자판 안에서 장애물을 고려하면서 이동시키는 문제였다.공원 크기와 시작지점이 각각 다르게 설정되어 있었다. [내 코드]처음에 공원 크기를 잡아주고 S 위치를 파악한 다음 이동을 시켜줬다.조건이 모두 만족해야 이동하는 방법으로 코드를 구성했다.def solution(park, routes): answer = [] # 공원 크기 H = len(park)-1 W = len(park[0])-1 # 시작점 설정 i = 0 while park: # for문 써도 되었을 듯 if 'S' in park[i]: a = i b = park[i].index('S') break i += 1 ..

코테 오답노트 2025.03.12

[선형대수] 4.2 Eigenvalues and Eigenvectors(Graphical Intuition in Two Dimensions~)

공부하는 단계에서 정리한 내용입니다.잘못된 내용이 있다면 말씀해주시면 감사하겠습니다.https://mml-book.github.io/book/mml-book.pdf 4.2 Eigenvalues and Eigenvectors Graphical Intuition in Two Dimensions여러 가지 linear mapping을 사용해서 determinant, eigenvector, eigenvalue를 직관적으로 접근해보자.아래는 5개의 transformation 행렬이 원점을 중심으로 하는 정사각형에 미치는 영향을 각각 나타낸다. eigenvalue는 변환 후에도 같은 방향으로 남아있는 벡터들의 크기 변화를 나타냄!e.g. $A=\begin{bmatrix} 2 & 0 \\ 0 & 3 \end{bmatr..

선형대수 2025.03.11

[선형대수] 4.2 Eigenvalues and Eigenvectors (~ 4.6 Example)

공부하는 단계에서 정리한 내용입니다.잘못된 내용이 있다면 말씀해주시면 감사하겠습니다.https://mml-book.github.io/book/mml-book.pdf 4.2 Eigenvalues and Eigenvectors이제 행렬과 그 linear mapping을 eigen이라는 개념을 통해서 새롭게 표현해볼 것이다.  Def 4.6$n \times n$ 행렬 $A$에 대해서 $\lambda$를 eigenvalue라고 하고, $A$가 $Ax = \lambda x$를 만족할 때 $x$를 $A$의 eigenvector라고 한다. 그리고 이 식을 eigenvalue equation 이라고 부른다.   Remark관습적으로 eigenvalue를 내림차순으로 정렬한 뒤 순서대로 first, second, .. ..

선형대수 2025.03.10

[선형대수] 4.1 Determinant and Trace (Determinant's properties ~)

공부하는 단계에서 정리한 내용입니다.잘못된 내용이 있다면 말씀해주시면 감사하겠습니다.https://mml-book.github.io/book/mml-book.pdf 4.1 Determinant and Trace이어서 $n \times n$ 행렬 $A$의 성질에 대해서 알아볼 것이다.$n \times n$ 행렬 $A$의 성질은 아래와 같다. • $det(AB) = det(A)det(B)$• $det(A) = det(A^{\top})$• $det(A) \neq 0$이면 $det(A^{-1}) = \frac{1}{det(A)}$• Similar matrices($B = P^{-1}AP$, 기저변환 행렬)끼리는 determinant가 같다.  즉, determinant는 basis를 무엇으로 잡는가에 따라서 변..

선형대수 2025.03.09

[선형대수] 4.1 Determinant and Trace (~Ex 4.3 Laplace Expansion)

공부하는 단계에서 정리한 내용입니다.잘못된 내용이 있다면 말씀해주시면 감사하겠습니다.https://mml-book.github.io/book/mml-book.pdf 4.1 Determinant and Trace앞에서 배웠듯이 행렬 $A \in \mathbb R^{n \times n}$의 determinant은 $A$를 $\mathbb R$로 대응시키는 함수이다.쓸 때는 $det(A)$ 혹은 $\begin{vmatrix} A \end{vmatrix}$와 같이 쓴다.   Ex 4.1 (Testing for Matrix Invertibility)행렬 $A \in R^{n \times n}$을 $n$의 크기에 따라서 살펴보자.(i) $A$가 $1 \times 1$ 행렬 $a$일 때:   $A$의 역행렬은 $A^..

선형대수 2025.03.08

[선형대수] 4. Matrix Decompositions

공부하는 단계에서 정리한 내용입니다.잘못된 내용이 있다면 말씀해주시면 감사하겠습니다.https://mml-book.github.io/book/mml-book.pdf 4. Matrix DecompositionsChapter 2와 3에서 벡터를 여러 가지 방법으로 다루어봤다. 이번 챕터에서는 행렬을 요약하는 법(summarization), 행렬을 분해하는 법(decomposition), 그리고 분해된 행렬을 사용해서 행렬을 근사하는 법(approximation)에 대해서 배울 것이다. Section 4.1의 determinants와 sections 4.2의 eigenvalues를 통해 몇 개 안되는 숫자를 가지고 행렬 전체의 성질을 설명하는 방법에 대해서 배울 것이다. 그 다음 섹션들에서 matrix dec..

선형대수 2025.03.07

[프로그래머스] 달리기 경주 (파이썬, 시간복잡도 개선)

[문제]callings에 등장하는 항목을 앞 항목하고 바꿔치기하는 문제였다.시간복잡도를 고려하는 게 문제의 포인트였다.   [코드]처음에는 아무 생각 없이 아래와 같이 코드를 짰다. def solution(players, callings): for i in callings: f_index = players.index(i) j = players[f_index-1] players[f_index] = j players[f_index-1] = i return players for문 안에서 i의 인덱스 찾아서 앞 항목과 바꿔치기하는 방법을 사용했다.   [왜 틀렸나]시간초과가 떴다.players의 길이가 50,000개 이하, callings의 길..

코테 오답노트 2025.03.06