-
코딩테스트 대비 특강
이 포스트는 3월 1일과 2일에 걸쳐 진행한 코딩테스트 특강의 내용을 기술한 포스트입니다. BFS/DFS, 백트래킹, 시뮬레이션 개념을 알고 있고 기출 문제에 손을 댈 수는 있는데 100% 푼다는 확신은 없어서 개념을 다시 정리하고 모의고사를 쳐보고 싶은 분이 이 포스트를 보신다면 많은 도움이 될 것입니다. 특강의 슬라이드는 여기에서 확인할 수 있습니다. 이 특강은 개인이 준비한 특강이고, 특히 특정 기업의 채용절차와 아무런 관련이 없습니다. 무엇보다 먼저 기초 지식과 자주 실수하는 점을 짚고 넘어가겠습니다. 함수의 인자로 구조체/pair/tuple/vector를 넘길 때 어떤...
-
빠르게 수렴하는 MCMC 만들기
저번 포스트에서 Markov Chain Monte Carlo(MCMC)에 대해서 간략히 알아보고 MCMC를 구현하는 대표적 알고리즘인 Metropolis-Hastings 알고리즘을 이해해보았습니다. 이번에는 이어서 MCMC의 수렴속도에 대해 논의해봅시다. MCMC가 만드는 샘플들은 target distribution에 점점 수렴하는 특징이 있습니다. 다르게 말하면 MCMC가 만들어내는 샘플을 사용하기 위해서는 샘플들이 target distribution에 수렴할 때 까지 기다려야 합니다. 적절히 수렴한 상태를 mix 되었다고 하고 이때까지 걸리는 시간을 mixing time이라고 합니다. 저번에 MCMC가 다른 샘플링 기법들에 비해 빠른 수렴속도를 가진다고 했는데, 사실 절대적인 수렴속도는 일반적으로 빠르지 못합니다. 때문에...
-
AMP(Accelerated Mobile Pages) 사용
들어가며 웹 문서를 작성할 일은 많다. 그런데 특별한 기능이 있는 문서를 원하는 것이 아닌, 블로그와 같이 일반적인 ‘글’을 작성하고 싶을 때의 경우를 생각해 보자. 크게 다음과 같은 방법들이 있을 것이다. 포털이 제공하는 서비스(Ex. 네이버 블로그, 티스토리 등) 사용 설치형 CMS(Ex. WordPress 등) 사용 GitHub Pages 등을 이용한 Jekyll 사용 포털 서비스의 경우 글 백업과 이전 등이 상당히 어려울 수 있으므로 쳐다보지조차 않았다. 설치형 CMS를 쓴다고 했을 때, 언젠가 HTML 기술이 필요해진다면 소스 편집 기능을 활용할...
-
Tree DP 문제 해결
목차 1. 개요 2. 기본 3. 구현 4. 문제풀이 5. 마무리 6. 참고자료 개요 이 포스트를 쓰며 알고리즘 공부를 하면서 오랫동안 다이나믹 프로그래밍을 그것도 트리에서 해결하는 문제를 꽤 안풀었음을 알았다. 그래서 오랜만에 다이나믹 프로그래밍 연습도 할겸 트리에서 해결하는 다이나믹 프로그래밍 문제를 몇가지 공유하고 같이 풀어보고자 한다. 이번 포스트를 통해 트리에서의 다이나믹 프로그래밍에 대한 문제를 재미있게 봐주었으면 한다. 간단한 원리 기본적으로 Top-down 방식으로 해결하며, 보통 leaf node 부터 값을 알아낸다. Top-down 방식의 DP에 익숙한 사람들은 문제를...
-
Rust Procedural Macros By Example
안녕하세요. 제가 최근에 Rust 공부를 시작했는데요~ 그래서 오늘은 Rust 1.29.0 부터 stable 이 된 Procedural Macros 에 대해서 포스팅해보도록 하겠습니다. 포스팅은 구구절절한 설명보다는 예제 코드 위주가 될 예정입니다! » 이 글을 좀 더 좋은 가독성으로 읽기 « Rust 의 매크로 시스템 Rust 의 매크로 시스템은 매우 강력한데요. 크게 다음과 같이 분류 할 수 있습니다. Declarative Macros Procedural Macros Function-like macros Derive mode macros Attribute macros 첫 번째는 Declarative Macros 는 일반적으로 개발자들이 흔히 알고 있는...