-
랜덤 올바르게 사용하기
서론 프로그램을 작성할 때 랜덤한 요소는 많이 들어갑니다. 어떤 공간을 탐색할 때 무작위로 탐색을 하기도 하고, 프로그램의 비밀 키를 만들거나 게임을 만들 때 카드 덱을 섞을 때 등, 랜덤이 프로그램에 사용되는 곳은 굉장히 많습니다. 하지만 이 랜덤은 자주 잘못 사용되고는 합니다. 랜덤을 올바르게 사용하는 방법에 대해 알아보려고 합니다. 랜덤이란? 랜덤이란 특정한 패턴이 없다는 것을 말합니다. 즉, 어떤 규칙에 의해 생성되지 않고 다른 변수와 독립적으로 만들어진 결과를 랜덤한 결과라고 합니다. 과연 완벽한 좋은 랜덤을 만들 수...
-
현대 암호 1 : 블록 암호
저번 포스팅에서는 고전 암호를 다루었습니다. 이번 포스팅에서는 현대 암호 중에서도 DES, AES와 같은 블록 암호를 다루도록 하겠습니다. 블록 암호란? 블록 암호(Block Cipher)란 평문을 블록 단위로 암호화하는 대칭키 암호 시스템입니다. 대칭키 암호 시스템은 암호화와 복호화를 할 때 동일한 키가 사용되는 암호 시스템입니다. 반대로 암호화와 복호화를 할 때 동일하지 않은 키가 사용되지 않는 공개키 암호 시스템도 존재하는데, 공개키 암호 시스템 보다는 대칭키 암호 시스템이 우리의 직관과 조금 더 맞는 시스템일 것입니다. 참고로 저번 포스팅에서 다룬 고전 암호는...
-
greedy algorithm study
그리디 알고리즘 스터디 12월 말부터 한양대의 알고리즘 동아리 후배들을 대상으로 스터디를 진행하고 있습니다. 매주 한가지 분야에 대한 문제들을 여러개 풀어보는 방식으로 진행할 계획인데요, 1주차에는 그리디 알고리즘에 관한 문제들을 풀어보았습니다. **** 뒤집기 (https://www.acmicpc.net/problem/1439) 대회 or 인턴 (https://www.acmicpc.net/problem/2875) 택배 (https://www.acmicpc.net/problem/8980) 멀티탭 스케줄링 (https://www.acmicpc.net/problem/1700) 보석 도둑 (https://www.acmicpc.net/problem/1202) 빵집 (https://www.acmicpc.net/problem/3109) 크게 만들기 (https://www.acmicpc.net/problem/2812) 캔디캔디 (https://www.acmicpc.net/problem/2878) 풍선 (https://www.acmicpc.net/problem/4716) 박스 채우기 (https://www.acmicpc.net/problem/1493) 숫자 게임 (https://www.acmicpc.net/problem/2923) 통나무 자르기 (https://www.acmicpc.net/problem/1114) 회의실 배정 (https://www.acmicpc.net/problem/1931) 도서관 (https://www.acmicpc.net/problem/1461) 행렬 (https://www.acmicpc.net/problem/1080) 등수 매기기 (https://www.acmicpc.net/problem/2012) 비슷한 순열 (https://www.acmicpc.net/problem/2413)...
-
Markov Chain Monte Carlo 샘플링의 마법
이번 포스트에서는 강력한 샘플링 기법 중 하나인 Markov Chain Monte Carlo(MCMC)에 대해 알아보겠습니다. MCMC의 활용도는 굉장히 넓어서 머신러닝을 비롯한 베이지안 통계학, 통계물리학, 컴퓨터비전, 자연어처리 등의 분야에 널리 쓰이고 있습니다. 하지만 MCMC는 역사가 짧고 (1990년대에 들어서 영향력을 발휘하기 시작) MCMC를 설명한 대부분의 자료가 수학적인 언어로만 쓰여진 탓에, 아직까지 개발자들에게 읽고 적용하기 좋은 가이드가 부족한 상태입니다. 특히나 한글 자료는 많이 부족합니다. 따라서 국내 개발자들도 MCMC를 이해하고 실제로 사용할 수 있도록 알고리즘을 체득하면 좋겠다고 생각해서 이 글을 작성하게...
-
Delaunay Triangulation 구현
목차 1. 개요 2. 원리 3. 구현 4. 마무리 5. 참고자료 개요 이 포스트를 작성하게 된 계기 이 글을 쓰게 된 계기는 학부 과정에 수학과 과목을 몰래 훔쳐 들으려고 하던 중, 계산 기하학에 대해 공부하는 과목을 알게 되었다. 바로 혹해서 들었다가 후반부에 너무 어렵고 추상적인 수학 파트가 나와서 좌절했다가, 초반부의 Deluanay Triangulation 만큼은 흥미롭고 응용 분야가 넓어서 공유하면 좋겠다 싶어서 가져오게 되었다. 간단한 설명 Deluanay Triangulation, 한국어로 들로네 삼각분할은 간단히 말하면 2차원 평면에 분포하는 점들을...