전체 글 119

[선형대수] 4장 연습문제 (Exercise 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$ 행렬..

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

[문제]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..

[선형대수] 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}$는 각각..

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

[문제]지폐를 몇 번 접어야 지갑에 들어가는지를 구하는 문제였다.  [내 코드]처음 내 코드이다.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$..

[선형대수] 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..

[선형대수] 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^..

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

[문제]주어진 숫자중에 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..

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

[문제]격자판 안에서 장애물을 고려하면서 이동시키는 문제였다.공원 크기와 시작지점이 각각 다르게 설정되어 있었다. [내 코드]처음에 공원 크기를 잡아주고 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..

[선형대수] 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, .. ..

[선형대수] 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를 무엇으로 잡는가에 따라서 변..

[선형대수] 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^..

[선형대수] 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..

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

[문제]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

[프로그래머스] 옹알이(2) (파이썬, startswith 함수)

내 풀이를 바탕으로 지피티와 함께 조금 다듬어봤다.  [문제]애기가 옹알이로 할 수 있는 말의 개수를 구하는 문제였다.아직 4가지 단어만 말 할 수 있고, 애기기 때문에 연속해서 같은 단어를 발음하지 못한다.   [코드]내 코드이다.먼저 슬라이싱으로 처리하기 위해서 2글자 단어('ye', 'ma')와 3글자 단어('aya', 'woo')가 등장했을 때의 2가지 경우로 나눴다.각 경우에서 babble의 앞 단어가 애기가 발음할 수 있는 단어이면, front_word라는 단어에 그 단어를 추가하고 babble에서 그 단어를 없애줬다. 여기서 추가한 단어가 기존의 front_word 단어와 같으면 발음할 수 없으므로 break.babble의 앞단어가 애기가 발음할 수 없는 단어여도 바로 break.babble..

코테 오답노트 2025.03.04

[프로그래머스] 햄버거 만들기 (파이썬, 시간초과)

시간초과로 오류가 나서, 그리고 내 코드도 마음에 들지만 다른 사람 코드가 더 깔끔해보여서 기록해본다. [문제]애니팡 같은 문제였다. 특정 패턴이 반복되면 팡 터지고 지워져서 붙여지면 다시 팡 터지고를 반복하는 문제였다.  [코드]while로 리스트 안에서 돌면서 1231이 지워지면 i를 앞으로 당겨서 풀었다.처음에 1231이 지워진다음 i-=3로 설정하지 않고 i=0으로 설정했더니 시간초과가 떴다.i=0 으로 설정하면 배열이 길어질 경우에 앞에서부터 무의미한 반복이 일어나서임을 깨닫고 i-=3로 바꿔줬다.최대 3 인덱스 이하($\because$123일 경우)에는 다시 지워질 가능성이 없기 때문이다.def solution(ingredient): answer = 0 i = 0 while i..

코테 오답노트 2025.03.03

[선형대수] 3장 연습문제 (Exercise 3.6 ~ 3.10)

공부하는 단계에서 정리한 내용입니다.잘못된 내용이 있다면 말씀해주시면 감사하겠습니다.https://mml-book.github.io/book/mml-book.pdf [3.6] [3.7] [3.8] [3.9] 코시슈바르츠 부등식($| \langle x,y \rangle | \leqslant \| x \| \| y \| $)을 사용해서 증명하는 문제였다.a는 $x$에 $x_{1}, x_{2}, ..., x_{n}$을, $y$에 $y = 1,1, ..., 1$을 넣고 풀면 되었고,b는 $x$에 $\sqrt{x_{1}}, \sqrt{x_{2}}, ..., \sqrt{x_{n}}$을, $y$에 $y = \frac{1}{\sqrt{x_{1}}}, \frac{1}{\sqrt{x_{2}}}, ..., \fra..