코드 연대기

발행: (2025년 12월 22일 오전 02:51 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

Part 1

한 해를 마무리하는 멋진 방법. 재미있는 도전처럼 보이고, 시도해보고 싶어요.

먼저 눈에 띈 점은:

  • 예시 입력은 잠금과 열쇠를 구분해서 제공한다
  • 내 퍼즐 입력은 구분되지 않는다

그래서 분류할 때 알고리즘이 더 신경 써야 할 것 같아요.

설명에 따라, 각 잠금과 열쇠를 열 높이를 나타내는 숫자 배열로 저장하려 합니다. 그 다음 아래와 같은 알고리즘을 구현할 수 있겠죠:

For each lock
  For each column
    Further filter the list of keys to those with 5 - N height
    in this column, where N is the lock column's height
  Any remaining keys are winners

코딩해 보는 게 기대돼요!

Writing my lock‑key matching algorithm

입력을 두 개의 리스트로 변환합니다. 각각은 5자리 리스트를 포함합니다:

input = input.split('\n\n').reduce((group, item) => {
    item = item.split('\n').map(line => line.split(''))
    if (item[0].every(el => el == '#')) {
        // Lock
        let digits = []
        for (let i = 0; i  el == '.')) {
        // Key
        let digits = []
        for (let i = 0; i  {
    tally += lock.reduce((keysRemaining, digit, index) => {
        return keysRemaining.filter(item => item[index]  el.slice())).length
})

정말 그렇게 간단할까요?

제가 하는 일은 다음과 같습니다:

  • 모든 유효한 열쇠를 셀 변수를 초기화하고
  • 각 잠금을 순회하며
  • 각 자리마다 한 번씩 필터링한 후 남은 열쇠 리스트의 길이만큼 합계를 증가시킵니다

예시 입력으로 실행했을 때 3이 나오며, 정답과 일치합니다. 이제 내 퍼즐 입력에 바로 적용해볼까 합니다. 최악의 경우 틀린 제출을 하고 남은 시도 기회가 세 번뿐이니, 바로 진행합니다!

Running on my puzzle input

어떤 결과가 나올까요? …

수천 단위의 숫자. 괜찮아 보이나요?

제출해봅니다…

정답이었습니다!

우와!!!

Year in review

올해 최저 점수와 동일하게 34점을 기록했습니다.

올해가 가장 어려운 해였음에도 새로운 최저 점수를 만들지 않은 것이 매우 자랑스럽습니다.

My 2024 advent calendar

역대 점수는 다음과 같습니다:

Yearly scores list

382/50076.4%이며 강한 C 등급입니다.

지금까지 제 평균은 이 정도였습니다. 또 다른 재미있는 퍼즐이 기다리는 2025년이 기대됩니다!

읽어 주셔서 감사합니다.

Back to Blog

관련 글

더 보기 »

Advent of Code Day 7 풀이: 타키온 빔 분할

나는 원래 이 글을 내 블로그 https://canro91.github.io/2025/12/13/AoC7/에 올렸다. 올해는 Advent of Code를 따라가고 있다. 나는 스스로에게 “f...”를 쓰도록 도전했다.

원숭이 시장

파트 1 또 다른 math gauntlet, 나는 여러 math operations를 프로그래밍하게 된다. 일부는 여러 conditionals의 일부가 될 것이다. 나는 이전에 해본 적이 있다. 나는 자신 있다.

100일 DSA 코딩 챌린지의 82일

문제: 2D Matrix에서 Peak Element 찾기 GeeksforGeeks 문제 링크: https://www.geeksforgeeks.org/problems/find-the-peak-element-in-a-2d-matrix/1 난이도…

100일 DSA 코딩 챌린지의 78일차

새로운 도전에 도전합니다: GeeksforGeeks POTD를 매일 풀고 내 솔루션을 공유합니다! 💻🔥 목표: 문제 해결 능력을 갈고닦고, 코딩 실력을 레벨업하며, 배우는 것.