도구스개발

드 브루인 수열 계산기

기호 k가지로 만든 길이 n의 모든 조합이 정확히 한 번씩 나오는 순환 수열을 만들고, 실제로 그런지 창을 훑어 검산해 보여 줍니다. 네 자리 비밀번호를 40,000번이 아니라 10,003번에 다 시도할 수 있는 이유를 확인할 수 있습니다.

같은 글자는 한 번만 셉니다. 지금 2가지입니다. 20가지까지 다룹니다.

글자

이 길이의 조합이 모두 한 번씩 나오는 수열을 만듭니다.

2가지 기호, 길이 3 조합

8가지

수열의 길이도 정확히 8자입니다. 조합 하나에 글자 하나씩이라 더 짧게 만들 수 없습니다.

수열 길이8자
검산 — 나온 조합8 / 8가지
두 번 나온 조합0가지
판정모든 조합이 정확히 한 번씩
이런 수열의 개수2개

수열

00010111

고리입니다. 끝까지 읽고 나면 다시 앞으로 이어져, 감아 도는 창까지 세어야 모든 조합이 나옵니다.

창을 한 칸씩 밀어 보기

자리
1000
2001
3010
4101
5011
6111
7110
8100

파란 줄이 끝에서 앞으로 감아 도는 창입니다. 이것까지 세어야 조합이 다 나옵니다.

몇 번 눌러야 하나

조합 수8가지
하나씩 끊어 넣을 때24번
드 브루인 수열로 죽 누를 때10번
줄어드는 비율2.40배 빠름
길이가 kⁿ로 딱 정해져 있습니다. 조합이 kⁿ 가지이고 글자 하나가 창 하나를 새로 만들어 내므로, 그보다 짧게는 만들 수 없고 모든 조합을 한 번씩만 담으면 그보다 길 필요도 없습니다. 그래서 이 수열은 「가장 짧은 전수 탐색」입니다.
네 자리 비밀번호는 10,003번이면 다 지나갑니다. 하나씩 끊어 넣으면 10,000 × 4 = 40,000번이지만, 입력을 끊지 않고 마지막 네 자리만 보는 자물쇠라면 드 브루인 수열 10,000자리에 앞 세 자리를 붙여 10,003번이면 됩니다. 다만 실제 도어락은 확인 버튼이 있거나 몇 번 틀리면 잠기므로 그대로 통하지는 않습니다.
왜 항상 존재하나요? 길이 n−1짜리 조합을 꼭짓점, 길이 n짜리 조합을 변으로 두면 드 브루인 그래프가 되는데, 모든 꼭짓점의 들어오는 변과 나가는 변이 각각 k개로 같습니다. 그런 그래프에는 오일러 회로가 반드시 있고, 그 회로를 따라 읽은 것이 곧 드 브루인 수열입니다.
연속된 몇 칸만 봐도 위치를 압니다. 모든 창이 한 번씩만 나오므로 창 하나가 곧 자리를 가리키기 때문입니다. 회전 각도 인코더나 로봇의 위치 인식에 이 성질을 쓰고, 카드 마술과 DNA 조립에도 같은 아이디어가 들어갑니다.

사용 방법

  1. 1쓸 기호를 넣습니다. 숫자 자물쇠라면 0123456789입니다.
  2. 2창 길이 n을 정합니다. 네 자리 비밀번호라면 4입니다.
  3. 3만들어진 수열과 길이(kⁿ)를 확인합니다.
  4. 4검산 결과에서 모든 조합이 정확히 한 번씩 나오는지 봅니다.
  5. 5몇 번 눌러야 하는지 비교표를 봅니다.

자주 묻는 질문

기호 k가지로 만들 수 있는 길이 n의 조합 kⁿ가지가 모두, 그리고 한 번씩만 나타나는 순환 수열입니다. 길이는 정확히 kⁿ이며 고리이므로 끝에서 앞으로 감아 읽는 창까지 셉니다. k=2, n=3이면 00010111이 그런 수열입니다.

입력을 끊지 않고 마지막 네 자리만 보는 자물쇠라면 그렇습니다. 하나씩 끊어 넣으면 10,000가지 × 4번 = 40,000번이지만, 드 브루인 수열 10,000자리를 죽 누르고 앞 세 자리를 다시 붙이면 10,003번에 모든 조합이 지나갑니다. 다만 실제 도어락은 대개 확인 버튼이 있거나 몇 번 틀리면 잠기므로 그대로 통하지는 않습니다.

리라스–프레도릭센(FKM) 방법을 씁니다. n의 약수 길이인 린던 워드를 사전순으로 이어 붙이면 사전순으로 가장 앞선 드 브루인 수열이 된다는 정리에 기댄 방법이며, 재귀 한 번으로 kⁿ 글자를 만듭니다. 드 브루인 그래프의 오일러 회로를 찾아도 같은 답이 나옵니다.

드 브루인 그래프에서 모든 꼭짓점의 들어오는 변과 나가는 변의 개수가 k로 같기 때문입니다. 길이 n−1짜리 조합을 꼭짓점, 길이 n짜리 조합을 변으로 두면 이 그래프가 나오는데, 들어오고 나가는 개수가 같고 연결되어 있으면 오일러 회로가 반드시 있습니다. 그 회로를 따라 읽은 것이 곧 드 브루인 수열입니다.

(k!)^(k^(n−1)) ÷ kⁿ개입니다. k=2, n=3이면 2⁴÷8 = 2개뿐이지만 k=2, n=5면 2,048개로 금세 폭발합니다. 이 도구는 그중 사전순으로 가장 앞선 것 하나를 만듭니다.

카드 마술, 로봇의 위치 인식, DNA 조립, 회전 각도 인코더 같은 데 쓰입니다. 공통점은 「전체를 보지 않고 연속된 몇 칸만 봐도 지금 어디인지 알 수 있게」 만드는 것입니다. 모든 창이 한 번씩만 나오므로 창 하나가 곧 위치를 가리키기 때문입니다.

전송되지 않습니다. 계산은 모두 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 만든 수열을 실제로 훑어 검산합니다. 모든 창을 세어 kⁿ가지가 정확히 한 번씩 나오는지 보며, 만드는 코드와 세는 코드는 따로 짜여 있어 어느 한쪽이 틀리면 갈립니다. k=2~5, n=1~5의 모든 조합과 10자리 4칸(10,000자)에서 통과하는 것을 테스트로 고정했습니다.
  • 검산에서 끝을 감아 도는 창까지 세는 것이 중요합니다. 이것을 빠뜨리면 마지막 n−1개의 창을 놓쳐 「빠진 조합이 있다」는 잘못된 결과가 나옵니다.
  • 손으로 아는 값도 박아 두었습니다. k=2, n=3의 사전순 첫 수열은 00010111이고, 그런 수열은 모두 두 개뿐입니다.
  • kⁿ이 20,000을 넘으면 만들지 않습니다. 기호 20가지, 창 20칸까지 넣을 수 있지만 그 곱이 상한을 넘으면 화면이 멈추기 때문입니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.