분류 전체보기 53

[백준 2231번 파이썬] '분해합' 모든 풀이 비교 분석

문제자연수 N의 분해합은 N과 N의 각 자리수를 더한 값이다. 예를 들어, 245의 분해합은 다음과 같다.245 + 2 + 4 + 5 = 256이때, 245는 256의 생성자가 된다. 생성자는 여러 개일 수 있으며, 생성자가 없는 경우도 있다.우리의 목표는 주어진 자연수 N에 대해 가장 작은 생성자를 찾는 것이다.배경지식이 문제는 브루트 포스 알고리즘 단계에 들어가 있다. 브루트 포스 알고리즘에 대해 간단히 알아보자면, 브루트(Brute)는 무식한 이라는 뜻이다. 한마디로 무식하게 다 해보는 알고리즘을 브루트 포스 알고리즘이라고 한다.논리 및 아이디어1. 값을 입력받는다.(입력받은 값: n)2. 1부터 n-1까지 해당 숫자와 자릿수를 모두 더해 생성자인지 확인한다.3. 생성자가 맞다면 반복문을 깨고 나온..

[DIY Projects]다이소 나무 트레이를 무선 충전기로 만들어보자!

만들게 된 계기평소 외출 후 돌아오면 자연스럽게 에어팟을 트레이에 올려두었다. 하지만 에어팟은 유선 충전을 해야 했는데, 충전 케이블이 짧아 공중에 떠 있는 경우가 많았고, 선을 꽂는 과정이 번거로워 충전을 미루다 보니 배터리가 0%가 되는 일이 자주 발생했다. 그래서 트레이에 무선 충전 기능을 추가하면 편리할 것이라고 생각했다. 마침 사용하지 않던 무선 충전 마우스 패드가 있어, 내부의 무선 충전 모듈을 분해하여 트레이 하단에 부착해 보기로 했다. 제작 과정1. 무선 충전 원리 및 테스트무선 충전은 코일 간 자기장을 이용한 유도 충전 방식이다. 따라서 충전 패드와 기기의 거리가 너무 멀어지면 충전이 되지 않기 때문에, 나무 트레이의 두께가 문제가 될 수 있었다.먼저 트레이의 두께(약 10mm)가 너무 ..

Projects 2025.03.09

[파이썬과 선형대수] 선형판별분석(LDA)의 정의, PCA와의 차이점 그리고 직접 구현하기

선형판별분석(LDA)LDA는 클래스가 나누어진 데이터에서 각 그룹(클래스)을 가장 잘 구분할 수 있는 방향으로 데이터를 변환하는 차원 축소 기법이다. 클래스 내의 데이터 간 거리를 줄이고, 클래스 간의 거리는 최대화하는 방식으로 데이터를 변환한다.예를 들어, 꽃잎의 길이와 너비 등 4개의 특성을 가진 데이터를 2차원으로 축소하면서도 세 개의 꽃(클래스)을 명확히 구분해준다.정의$$\lambda=\frac{||S_B W||^2}{||S_W W||^2}$$$S_B$는 클래스 간의 분산 행렬이고 $S_W$는 클래스 내에서의 분산 행렬이다. $W$는 열벡터들의 집합으로 이루어진 행렬이다. 이 수식을 통해 원하는 것은 $\lambda$가 최댓값이 되는 $W$를 찾는 것이다.LDA의 수학적 이해$S_W$각 클래스 ..

[파이썬과 선형대수] 주성분 분석(PCA)의 정의와 의미, 직접 구현하기

본 글을 이해하기 위해서는 고윳값 분해와 특이값 분해에 대한 지식이 필요합니다. 이전 글을 읽고 이 글을 읽으시기 바랍니다.https://aaaaaaaaaaayowooji.tistory.com/54 [파이썬과 선형대수]고유값과 고유벡터, eig 안쓰고 직접 구현해보기고유값과 고유벡터정의기하학적으로 볼 때, 어떤 벡터 $v_{2}$에 행렬 $A$를 곱하면 벡터의 크기와 방향이 변하게 된다. 그런데 어떤 벡터($v_{1})$를 곱했더니 방향이 바뀌지 않고 크기만 변하는 벡aaaaaaaaaaayowooji.tistory.com https://aaaaaaaaaaayowooji.tistory.com/55 [파이썬과 선형대수]특잇값 분해의 정의, svd 안쓰고 직접 구현해보기특잇값 분해(Singular Value ..

[파이썬과 선형대수] 특잇값 분해의 계층화, Reduced SVD 정의와 직접 구현하기

https://aaaaaaaaaaayowooji.tistory.com/55 [파이썬과 선형대수]특잇값 분해의 정의, svd 안쓰고 직접 구현해보기특잇값 분해(Singular Value Decomposition)정의$$A=U \Sigma V^T$$$M \times N$ 행렬을 $U,\Sigma, V^T$ 의 세 개의 행렬로 분해하는 방법이다.$AV=U\Sigma$에서 $V$가 정규직교행렬이기 때문에 넘겨서 위 식과 같은 꼴로aaaaaaaaaaayowooji.tistory.com이전 글에서 특잇값 분해(SVD) 정의에 대해 알아보고 파이썬으로 구현도 해보았다.SVD의 진정한 의미는 이번 글에서 다루어볼 계층화(layer) 가 진짜라고 생각한다.특잇값 분해의 계층화특잇값 분해를 하면,$$A=\sigma_1u_..

[파이썬과 선형대수]특잇값 분해의 정의, svd 안쓰고 직접 구현해보기

특잇값 분해(Singular Value Decomposition)정의$$A=U \Sigma V^T$$$M \times N$ 행렬을 $U,\Sigma, V^T$ 의 세 개의 행렬로 분해하는 방법이다.$AV=U\Sigma$에서 $V$가 정규직교행렬이기 때문에 넘겨서 위 식과 같은 꼴로 사용한다.$$A=\begin{bmatrix}u_1\;u_2\;u_3...u_m\end{bmatrix}\begin{bmatrix}\sigma_1&0&0&...&0&0&0\\ 0&\sigma_{2}&0&...&0&0&0\\0&0&\sigma_3&...&0&0&0\\0&0&0&...&\sigma_m&0&0\end{bmatrix}\begin{bmatrix}v_1\;v_2\;v_3...v_n\end{bmatrix}^T$$이때, $u$와..

[파이썬과 선형대수]고유값과 고유벡터, eig 안쓰고 직접 구현해보기

고유값과 고유벡터정의기하학적으로 볼 때, 어떤 벡터 $v_{2}$에 행렬 $A$를 곱하면 벡터의 크기와 방향이 변하게 된다. 그런데 어떤 벡터($v_{1})$를 곱했더니 방향이 바뀌지 않고 크기만 변하는 벡터가 존재하더라. 이때의 벡터를 고유벡터라고 하고 그 크기 $\lambda$를 고유값이라고 한다.$$Av=\lambda v$$로 식을 작성할 수 있다. (단, $v$는 0이 아니어야 한다.)하지만 $\lambda$는 스칼라이기 때문에 이대로 계산하지 못한다. 그래서 단위행렬을 곱해서 계산을 진행한다.$$(A-\lambda I)v=0$$위 식을 만족시키는 해가 곧 고유벡터이다.즉, 고유벡터는 고윳값에 의해 이동된 행렬의 영공간에 존재한다.$v$는 non-trival한 해다.$(A-\lambda I)v=0..

[파이썬과 선형대수] 일반선형모델(General Linear Model)과 최소제곱해(Least Square Problem)

일반선형모델(General Linear Model)우리가 흔히 말하는 일반 선형 모델은 독립변수와 종속변수를 연관시킨 방정식의 일종이다. 간단히 예를 들자면, 학생들이 다니는 학원의 개수($n$)과 일주일 동안의 공부 시간($t$)에 따른 전체 과목 평균 성적($y$)를 예측하는 모델이 있다고 가정하자.방정식은 아래와 같을 것이다.$$y= \beta_{1}n+ \beta_{2}t+\beta_{3}$$학원의 개수와 공부 시간은 독립변수이고, 앞에 계수가 붙어서 종속변수 $y$를 이룬다.이때, 새로 측정한 데이터를 입력해서 결과를 예측했을 때, 실제 $y$와 같도록 계수 $\beta$를 정해주는 것이 중요한 과제이다.최소제곱해의 정의앞에서 알아본 일반선형모델의 해를 구하는 방법을 최소제곱해라고 책에서는 소개..

[파이썬 라이브러리]numpy.linalg 함수 분석(2)(qr,eig,svd)

numpy.linalg.qrlinalg.qr(a, mode='reduced')qr분해는 이미 파이썬 라이브러리에 구현이 되어 있다. numpy.linalg에서 불러오면 된다.인자(Parameters)a: array_like, shape (…, M, N)QR분해를 할 행렬을 입력한다.최소 2차원 이상의 행렬이 들어가야 한다.mode: {‘reduced’, ‘complete’, ‘r’, ‘raw’}, optional, default: ‘reduced’QR분해를 할 때의 분해 결과의 형태를 결정하는 인자다.reducedQ와 R을 반환한다.QR분해 시 a가 $M \times N$일 때, 얇은 분해를 하는 것을 의미한다.이때, Q는 $M \times N$ 직교행렬(정방행렬은 아니므로 엄밀히 직교행렬이라 할 수 없..

[영국 근교 여행] 코츠월드를 대중교통 타고 가보자!

본 글의 여행 시기는 24년 9월입니다  저번 리스본 아제냐스 두 마르 여행 글에 이어서 영국 여행 중 다녀 온 코츠월드를 가는 방법에 대해 알아보자.https://aaaaaaaaaaayowooji.tistory.com/47 [리스본 근교] 아제냐스 두 마르를 100년 된 트램 타고 가보자!본 글의 여행 시기는 24년 10월입니다 포르투갈 리스본 근처에 있는 근교 마을 아제냐스 두 마르(Azenhas do Mar)를 대중교통 타고 가는 법에 대해 알아보자! 아제냐스 두 마르에 가게 된 이유보통aaaaaaaaaaayowooji.tistory.com 영국 코츠월드를 대중교통을 타고 갔다 왔다. 그런데 정보가 너무 없어서 길 찾는데에 애를 먹었다. 코츠월드를 가고 싶었던 이유코츠월드를 인터넷에 검색하면 영국인..

여행 2024.11.25
반응형