본문 바로가기
728x90
반응형

분류 전체보기266

[정수론] 약수, 배수, 최대공약수, 최소공배수와 관련된 알고리즘 공약수와 최대공약수(GCD),  공배수와 최소공배수(LCM), 유클리드의 호제법 (Euclidean Algorithm)나눗셈 정리 (Division Algorithm)임의의 정수 $a, b\ (b \neq 0)$에 대하여 $a = bq + r$, $0 \le r  파이썬 코드에서는 간단히 구할 수 있다.q = a // br = a % b 약수와 배수 (divisor and multiple)두 정수 $a, b \ (b \neq 0)$에 대하여 $b=ac$를 만족하는 정수 $c$가 존재할 때, $b$를 $a$의 배수(multiple)라 하고 $a$를 $b$의 약수(divisor) 또는 인수(factor)라 한다. 이때 "$a$는 $b$를 나눈다" 또는 "$b$는 $a$에 의하여 나누어떨어진다" 라고 하고, .. 2024. 8. 10.
[정수론] 오일러의 정리, 페르마의 소정리, 중국인의 나머지 정리, 윌슨의 정리 정수론 4대 정리: 오일러의 정리, 페르마의 소정리, 중국인의 나머지 정리, 윌슨의 정리  정수론 4대정리에 대해 간단히 정리한다. 자세한 내용이나 증명은 이후 포스팅 할 예정이다.여기서는 정리의 내용과 간단한 활용방법에 대해 알아본다.페르마의 소정리 (Fermat's little theorem)정수 $a$, 소수 $p$에 대하여 다음이 성립한다.\[ a^p \equiv p \pmod{p} \]$a$가 $p$로 나누어지지 않는 경우에(즉 $p \nmid a$, $\gcd(p, a)=1$) 다음이 성립한다.\[ a^{p-1} \equiv 1 \pmod{p} \] 역은 성립하지 않는다. 즉, 소수가 아닌 합성수 $p$인 경우에도 $a^{p-1} \equiv 1 \pmod{p}$인 경우가 존재한다.이런 $p$.. 2024. 8. 6.
[conda] [PyG] torch geometric 설치 오류 (오래된 cuda version) Conda에서 pyg 설치하기 (CUDA 버전 맞추기)연구실 서버를 고쳐야 하는데 실험을 중단할 순 없으니 학과 서버를 대여하기로 했다.그래서 개발환경을 다시 설정해야하는데...연구실 GPU의 CUDA version이 달라서 완전히 똑같은 세팅을 할 순 없었다. Update: 2024.11.06 (CUDA 10.1)아니 이번에는 cuda 버전이 10.1이다더 낮은 버전이다....... 미치겠다하루종일 또 시간 걸려서 겨우 설치했다cuda 10.1이 되는 pytorch를 1.8.1로 설치하고 나머지는 아래 참고[3] 덕분에 해결했다(pyg_env) $ python -c "import torch; print(torch.__version__)"1.8.1+cu101(pyg_env) $ python -c "imp.. 2024. 7. 22.
최소 공통 조상 (Lowest Common Ancestor, LCA) 최소 공통 조상 (LCA) 알고리즘Problem Setup$N$개의 node로 이루어진 트리가 주어진다. (트리이므로 간선의 개수는 $N-1$개이다)$q$개의 query에 대하여 두 node사이의 거리를 계산한다. 위 그림은 백준 11437 LCA 문제이다. 1번 노드가 루트이다.6번과 11번 노드의 최소 공통 조상은 2번 노드이다. (1번 노드 역시 공통 조상이지만, 최소가 아니다.)10번과 9번 노드의 최소 공통 조상은 4번이다. 즉, LCA(10, 9) = 48번과 15번 노드의 최소 공통 조상은 1번이다. 즉, LCA(8, 15) - 1 루트노드에서 DFS/BFS 알고리즘을 통해 각 노드의 깊이를 계산하여 depth 배열에 저장한다.1의 depth는 0, 2와 3의 depth는 1, 4번~8번 노.. 2024. 7. 11.
[Python] 퍼즐 조각 채우기 퍼즉 조각 채우기문제 출처: 프로그래머스난이도: level 3input size: $n \le 50$ (정사각 격자)(주관) 자료구조: 그래프(주관) 알고리즘: 완전탐색, BFS(주관) 시간복잡도: $O(n^2) = O(V+E)$ ($V=n^2, E=2n(n-1)$) 2개의 정사각 배열이 주어진다. 1은 블록 한 조각을, 0은 빈 공간을 나타낸다.game_board의 빈 공간을 table에 있는 블록을 이용하여 채운다.하나의 공간을 여러 블록으로 채우거나, 작은 블록으로 큰 빈공간을 채우고 나서도 빈 공간이 있으면 안된다.이때 채워지는 블록의 면적을 리턴하면 된다.STEP 1. 서로 같은 블록단순히 면적을 구하는 것은 DFS/BFS를 이용하여 구할 수 있다.그리고 블록은 좌표의 리스트로 나타낼 수 있다... 2024. 7. 3.
[Python] 최고의 집합 최고의 집합문제 출처: 프로그래머스난이도: level 3참고: 없음input size: $1 \le n \le 10^4$, $1 \le s \le 10^8$(주관) 자료구조: 없음(주관) 알고리즘: 수학(주관) 예상 시간복잡도: $O(n)$합이 $s$인 $n$개의 자연수 집합을 구하고, 그 중 원소의 합이 최대인 집합을 오름차순으로 정렬한다. STEP 1. 관찰과 직관프로그래머스에 주어진 예시가 $n=2$라서 와닿지는 않는다.왜냐면 $n=2$인 경우에 너무 쉽게 찾을 수 있다.$a_1 = x, x_2 = s-x$라 하면 곱 $f(x) = x(s-x)$이고 이차함수의 최댓값은 $x=s/2$인 지점이다.물론 정수이므로 $a_1 = \lfloor s/2 \rfloor$, $a_2 = s-a_1$으로 간단히 찾.. 2024. 7. 2.
728x90
반응형