전체 글 63

USB 또는 외장 하드 분실에 대비하기

게이 퍼리 야짤이나 스캇물과 같은 민감한 정보가 담긴 USB나 외장 하드를 분실했을 때 다른사람이 그 안을 보는 것은 상상만 해도 끔찍합니다. 또, 다른 사람과 컴퓨터를 공유하는 상황이라면, 자신만 알고 싶은 파일을 따로 담아두어야 합니다. 이를 위해서 따로 파일을 저장할 때는 미리미리 Encrypt 해놓는 습관을 가져야 합니다. https://github.com/Farkladin/FilEncrypter GitHub - Farkladin/FilEncrypter: Encrypt your fileEncrypt your file. Contribute to Farkladin/FilEncrypter development by creating an account on GitHub.github.com Apple In..

카테고리 없음 2026.05.06

[토막글] Max-Flow 구현 검증용 기본 문제

BOJ나 Codeforces에 순전히 flow graph만 주어지는 maximum flow 기본 문제가 없어서 찾아봤습니다.CSES 1694https://cses.fi/problemset/task/1694 CSES - Download SpeedCSES - Download Speed Time limit: 1.00 s Memory limit: 512 MB Consider a network consisting of n computers and m connections. Each connection specifies how fast a computer can send data to another computer. Kotivalo wants to download some data from a servecses.f..

잡다한것 etc. 2025.12.14

[Knight's Tour] Warnsdorff's Rule 개선하기

Knight's Tour  Knight's tour(기사의 여행)은 체스보드에서 나이트가 체스보드의 모든 칸을 방문하는 경로이다. 체스보드의 크기와 나이트가 여행을 시작하는 칸에 따라서 knight's tour가 존재하지 않을 수 도 있다. 만약 knight's tour가 존재하고, 나이트가 tour의 마지막 위치에서 시작 위치로 이동이 가능하다면, 이를 closed knight's tour라고 부르며, 그렇지 않을 때 open knight's tour라고 부른다. 아래 두 문장은 knight's tour에 대한 잘 알려진 사실이다. \(n \times n\) 체스보드에서 \(n\)이 홀수라면 \(n \ge 5\)일때 open knight's tour가 반드시 존재한다.\(n\)이 짝수라면, \(n \g..

Well Known Problem 2024.09.14

PS에 bitset이용하기

INTRODUCTION  PS(problem solving, 본문에서 문제 해결 프로그래밍을 뜻함)에서 bitset을 이용한 최적화는 널리 알려져 있지만, 그렇게 자주 이용되는 것은 아닙니다. 하지만, 몇 가지 경우에서 메모리나 실행 시간을 획기적으로 줄일 수 있는 방법이 되기도 합니다. Reduce Memory  메모리를 줄이는 방법은 생각보다 단순합니다. Boolean array를 이용해야 한다면, 대신 bitset을 이용하는 방법으로 메모리를 1/4정도로 줄이는 것이 가능합니다. 이 방법으로 BOJ 2814번을 sieve만으로 해결하는것이 가능합니다. 또, segment tree leaf node가 0 또는 1만 가진다면, segment tree가 큰 크기를 가지면서 상대적으로 적은 메모리를 가지게..

잡다한것 etc. 2024.02.26

[MacOS] iD4 MKII 오디오 인터페이스 Loopback 설정

https://m.blog.naver.com/xyccf777/222572538619 맥OS 에서 AUDIENT 오디언트 ID14 MK2 루프백 설정해서 OBS방송,녹화/디스코드 활용법맥북에서 오디언트사의 id14 mk2 루프백 설정에 대해서 설명해드리겠습니다. 윈도우와 루프백 설정하는 방...blog.naver.com위 블로그에 나오는 내용과 거의 동일합니다. 하지만, iD14와 iD4의 채널에 차이가 있기 때문에 LadioCast에서의 설정을 약간 다르게 해주어야 합니다. 먼저 BlackHole과 LadioCast를 다운받아야 합니다.LadioCast의 경우 AppStore에서 다운받아 주세요. / BlackHole의 경우 아래의 링크를 통해 다운받을 수 있습니다. https://existential...

잡다한것 etc. 2024.02.13

Bowyer-Watson Algorithm : Online Delaunay Triangulation

1. Introduction  Delaunay triangulation을 위한 알고리즘 중 가장 쉽고 간단한 것이 Bowyer-Watsom algorithm이다. Bowyer-Watson algorithm은 3차원 이상의 점들에 대해서도 Delaunay triangulation 계산할 수 있다는 장점이 있다. 또, Bowyer-Watson algorithm이 online query를 이용하는 알고리즘이라는 점에서 다른 알고리즘과 차별화된다. 이번 글에서는 이 Bowyer-Watson algorithm에 대해 설명하고 필자의 구현체에 대한 소개할 것이다. 2. Algorithm  Delaunay triangulation은 모든 삼각형의 외접원 내에 어떠한 점도 속하지 않도록 삼각형을 형성하는 것이다. 이는..

Algorithms 2023.10.31

Randomized Search 무작위 탐색

1. Introduction TSP나 할당문제 등 몇몇 최적화 문제에는 그 문제의 정확한 해를 찾거나 근사하기 위한 효율적인 알고리즘이 알려져 있다. 하지만, 그렇지 않은 경우도 존재한다. 이런 최적화 문제들의 해를 찾는 데에는 보통 EXP time이 소요되며, 근사하는 방법도 딱히 알려져 있지 않다. 그래도 널리 알려진 최적화 방법을 이용하면 값을 충분히 좋은 근사 해를 얻을 수 있다. 이런 방법에는 gradient descent, simulated annealing 그리고 genetic algorithm 등이 있다. 이중 simulated annealing과 genetic algorithm은 randomized search로 분류할 수 있다. 본문에서는 randomized search에 관해 다루고자..

きたまさ法 / 키타마사법 / Kitamasa Method

서론  きたまさ法은 일본의 경기 프로그래머 wata가 블로그에서 소개한 점화식을 빠르게 계산하는 방법이다. 사실상 companion matrix의 멱승을 구하는 방법과 같지만, 선형 점화식이라는 특성을 활용하여 FFT를 이용, 선형 점화식의 항을 약간 더 빠르게 계산할 수 있다. ( \( O(k^2 \log N) \)에서 \( O(k \log k \log N )\). 따라서 \(k\)가 작은 점화식의 경우 별 의미가 없다. ) 이 테크닉의 이름은 블로그에서 소개한 wata가 붙였는데 きたまさ가 이 방법을 강력하게 주장했다고 한다. 이 きたまさ라는 사람이 한국에서는 잘 알려져 있지 않지만, kitamasa란 핸들을 이용하는 北川宜稔라는 사람으로, 일본에서는 '개미책'이라고 불리는 「プログラミングコンテストチ..

Algorithms 2023.10.10

Knuth-Morris-Pratt Algorithm

1. Introduction Ctrl + F 를 통해 인터넷에서 특정 문자열을 검색할 수 있다. 이런 종류의 검색에 이용되는 문자열 매칭 알고리즘 중 가장 유명한 것이 Knuth-Morris-Pratt(KMP) algorithm이다. 1.1. Navie Method KMP algorithm에 대한 설명을 하기 전 Naive한 문자열 매칭에 관한 이야기를 하겠다. 검색어, 즉 찾고자 하는 문자열을 \(P\)라 하자. 보통 이 \(P\)를 패턴이라고 한다. 우리는 \(P\)를 text \(T\)에서 몇 번 등장하는지, 어디서 등장하는지 알아야 한다. Naive하게 \(P\)를 \(T\)에서 찾으려면 아래의 과정을 수행하게 될 것이다. Naive-String-Matcher(\(T\),\(P\)) 1 \(n =..

Algorithms 2023.10.02