본문으로 건너뛰기

관용적인 Kotlin으로 풀어보는 Advent of Code 퍼즐

Advent of Code는 매년 12월에 열리는 이벤트로, 12월 1일부터 25일까지 매일 휴일 테마의 퍼즐이 게시됩니다. Advent of Code의 제작자인 Eric Wastl의 허가를 받아 관용적인 Kotlin 스타일을 사용하여 이러한 퍼즐을 해결하는 방법을 보여드리겠습니다.

Advent of Code 준비하기

Kotlin으로 Advent of Code 챌린지를 해결하는 방법을 시작하고 실행하는 기본 팁을 안내합니다.

  • 이 GitHub 템플릿을 사용하여 프로젝트 만들기
  • Kotlin Developer Advocate인 Sebastian Aigner의 환영 비디오를 확인하세요.

Advent of Code 2022

Day 1: Calorie counting

Kotlin Advent of Code template과 Kotlin에서 문자열 및 컬렉션 작업을 위한 편의 함수(예: maxOf()sumOf())에 대해 알아봅니다. 확장 함수가 멋진 방식으로 솔루션을 구성하는 데 어떻게 도움이 되는지 확인하세요.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • 비디오에서 솔루션을 확인하세요.

YouTube Advent of Code 2022 Day 1 | Kotlin

Day 2: Rock paper scissors

Kotlin에서 Char 유형에 대한 연산을 이해하고, Pair 유형과 to 생성자가 패턴 매칭과 어떻게 잘 작동하는지 확인하세요. compareTo() 함수를 사용하여 자신의 객체를 정렬하는 방법을 이해하세요.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • 비디오에서 솔루션을 확인하세요.

YouTube Advent of Code 2022 Day 2 | Kotlin

Day 3: Rucksack reorganization

kotlinx.benchmark 라이브러리가 코드의 성능 특성을 이해하는 데 어떻게 도움이 되는지 알아봅니다. intersect와 같은 집합 연산이 겹치는 데이터를 선택하는 데 어떻게 도움이 되는지 확인하고, 동일한 솔루션의 다양한 구현 간의 성능 비교를 확인하세요.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • 비디오에서 솔루션을 확인하세요.

YouTube Advent of Code 2022 Day 3 | Kotlin

Day 4: Camp cleanup

infixoperator 함수가 코드를 더 표현력 있게 만들 수 있는 방법과 StringIntRange 유형에 대한 확장 함수가 입력을 쉽게 구문 분석할 수 있도록 하는 방법을 확인하세요.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • 비디오에서 솔루션을 확인하세요.

YouTube Advent of Code 2022 Day 4 | Kotlin

Day 5: Supply stacks

팩토리 함수로 더 복잡한 객체를 구성하는 방법, 정규 표현식을 사용하는 방법, 양방향 ArrayDeque 유형에 대해 알아봅니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • 비디오에서 솔루션을 확인하세요.

YouTube Advent of Code 2022 Day 5 | Kotlin

Day 6: Tuning trouble

kotlinx.benchmark 라이브러리를 사용하여 더 심층적인 성능 조사를 보고, 동일한 솔루션의 16가지 변형의 특성을 비교합니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • 비디오에서 솔루션을 확인하세요.

YouTube Advent of Code 2022 Day 6 | Kotlin

Day 7: No space left on device

트리 구조를 모델링하는 방법을 배우고, Kotlin 코드를 프로그래밍 방식으로 생성하는 데모를 확인하세요.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • 비디오에서 솔루션을 확인하세요.

YouTube Advent of Code 2022 Day 7 | Kotlin

Day 8: Treetop tree house

실행 중인 sequence 빌더와 프로그램의 첫 번째 초안과 관용적인 Kotlin 솔루션이 얼마나 다를 수 있는지 확인하세요(특별 게스트 Roman Elizarov와 함께!).

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • 비디오에서 솔루션을 확인하세요.

YouTube Advent of Code 2022 Day 8 | Kotlin

Day 9: Rope bridge

run 함수, 레이블이 지정된 반환 및 coerceIn 또는 zipWithNext와 같은 편리한 표준 라이브러리 함수를 확인하세요. ListMutableList 생성자를 사용하여 주어진 크기의 목록을 구성하는 방법을 확인하고, 문제 설명에 대한 Kotlin 기반 시각화를 살펴보세요.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • 비디오에서 솔루션을 확인하세요.

YouTube Advent of Code 2022 Day 9 | Kotlin

Day 10: Cathode-ray tube

범위와 in 연산자가 범위를 자연스럽게 확인하는 방법, 함수 매개변수를 수신기로 바꿀 수 있는 방법, tailrec 수정자에 대한 간략한 탐색을 알아봅니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • 비디오에서 솔루션을 확인하세요.

YouTube Advent of Code 2022 Day 10 | Kotlin

Day 11: Monkey in the middle

가변적인 명령형 코드에서 불변 및 읽기 전용 데이터 구조를 사용하는 보다 기능적인 접근 방식으로 이동하는 방법을 확인하세요. 컨텍스트 수신기와 손님이 Advent of Code를 위해 자신의 시각화 라이브러리를 구축한 방법을 알아보세요.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • 비디오에서 솔루션을 확인하세요.

YouTube Advent of Code 2022 Day 11 | Kotlin

Day 12: Hill Climbing algorithm

큐, ArrayDeque, 함수 참조 및 tailrec 수정자를 사용하여 Kotlin으로 경로 찾기 문제를 해결합니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • 비디오에서 솔루션을 확인하세요.

YouTube Advent of Code 2022 Day 12 | Kotlin

Advent of Code 2021

Day 1: Sonar sweep

windowed 및 count 함수를 적용하여 정수의 쌍 및 세 쌍으로 작업합니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • Kotlin Blog에서 Anton Arhipov의 솔루션을 확인하거나 비디오를 시청하세요.

YouTube Advent of Code 2021 in Kotlin, Day 1: Sonar Sweep

Day 2: Dive!

구조 분해 선언과 when 표현식에 대해 알아봅니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • GitHub에서 Pasha Finkelshteyn의 솔루션을 확인하거나 비디오를 시청하세요.

YouTube Advent of Code 2021 in Kotlin, Day 2: Dive!

Day 3: Binary diagnostic

이진수로 작업하는 다양한 방법을 살펴보세요.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • Kotlin Blog에서 Sebastian Aigner의 솔루션을 확인하거나 비디오를 시청하세요.

YouTube Advent of Code 2021 in Kotlin, Day 3: Binary Diagnostic

Day 4: Giant squid

입력을 구문 분석하고 보다 편리한 처리를 위해 일부 도메인 클래스를 도입하는 방법을 알아봅니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • GitHub에서 Anton Arhipov의 솔루션을 확인하거나 비디오를 시청하세요.

YouTube Advent of Code 2021 in Kotlin, Day 4: Giant Squid

Advent of Code 2020

GitHub 리포지토리에서 Advent of Code 2020 퍼즐에 대한 모든 솔루션을 찾을 수 있습니다.

Day 1: Report repair

입력 처리, 목록 반복, 맵 구축의 다양한 방법, let을 사용하는 방법을 살펴보세요. 함수를 사용하여 코드를 단순화합니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • Kotlin Blog에서 Svetlana Isakova의 솔루션을 확인하거나 비디오를 시청하세요.

YouTube Learn Kotlin With the Kotlin Team: Advent of Code 2020 #1

Day 2: Password philosophy

문자열 유틸리티 함수, 정규 표현식, 컬렉션 작업 및 let이 어떻게 작동하는지 살펴보세요. 함수는 표현식을 변환하는 데 유용할 수 있습니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • Kotlin Blog에서 Svetlana Isakova의 솔루션을 확인하거나 비디오를 시청하세요.

YouTube Learn Kotlin with The Kotlin Team: Advent of Code 2020 #2

Day 3: Toboggan trajectory

명령형 및 보다 기능적인 코드 스타일을 비교하고, 쌍 및 reduce()로 작업합니다. 함수, 열 선택 모드에서 코드를 편집하고, 정수 오버플로를 수정합니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • GitHub에서 Mikhail Dvorkin의 솔루션을 확인하거나 비디오를 시청하세요.

YouTube Learn Kotlin with the Kotlin Team: Advent of Code 2020 #3

Day 4: Passport processing

when 표현식을 적용하고 입력 유효성을 검사하는 다양한 방법을 살펴보세요. 유틸리티 함수, 범위 작업, 집합 멤버십 확인 및 특정 정규 표현식과 일치합니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • Kotlin Blog에서 Sebastian Aigner의 솔루션을 확인하거나 비디오를 시청하세요.

YouTube Learn Kotlin with the Kotlin Team: Advent of Code 2020 #4

Day 5: Binary boarding

Kotlin 표준 라이브러리 함수(replace(), toInt(), find())를 사용하여 숫자의 이진 표현으로 작업하고, 강력한 로컬 함수를 탐색하고, Kotlin 1.5에서 max() 함수를 사용하는 방법을 배웁니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • Kotlin Blog에서 Svetlana Isakova의 솔루션을 확인하거나 비디오를 시청하세요.

YouTube Learn Kotlin with the Kotlin Team: Advent of Code 2020 #5

Day 6: Custom customs

표준 라이브러리 함수(map(), reduce(), sumOf(), intersect()union())를 사용하여 문자열 및 컬렉션에서 문자를 그룹화하고 계산하는 방법을 알아봅니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • Kotlin Blog에서 Anton Arhipov의 솔루션을 확인하거나 비디오를 시청하세요.

YouTube Learn Kotlin with the Kotlin Team: Advent of Code 2020 #6

Day 7: Handy haversacks

정규 표현식을 사용하고, Kotlin에서 Java의 compute() 메서드를 사용하여 맵의 값에 대한 동적 계산을 위해 HashMaps를 사용하고, forEachLine() 함수를 사용하여 파일을 읽고, 두 가지 유형의 검색 알고리즘(깊이 우선 및 너비 우선)을 비교하는 방법을 알아봅니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • Kotlin Blog에서 Pasha Finkelshteyn의 솔루션을 확인하거나 비디오를 시청하세요.

YouTube Learn Kotlin with the Kotlin Team: Advent of Code 2020 #7

Day 8: Handheld halting

봉인된 클래스와 람다를 적용하여 명령을 나타내고, Kotlin 집합을 적용하여 프로그램 실행에서 루프를 검색하고, 시퀀스와 sequence { } 빌더 함수를 사용하여 지연 컬렉션을 구성하고, 실험적인 measureTimedValue() 함수를 사용하여 성능 메트릭을 확인합니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • Kotlin Blog에서 Sebastian Aigner의 솔루션을 확인하거나 비디오를 시청하세요.

YouTube Learn Kotlin with the Kotlin Team: Advent of Code 2020 #8

Day 9: Encoding error

any(), firstOrNull(), firstNotNullOfOrNull(), windowed(), takeIf()scan() 함수를 사용하여 Kotlin에서 목록을 조작하는 다양한 방법을 살펴보고, 이는 관용적인 Kotlin 스타일을 보여줍니다.

  • Advent of Code에서 퍼즐 설명을 읽어보세요.
  • Kotlin Blog에서 Svetlana Isakova의 솔루션을 확인하거나 비디오를 시청하세요.

YouTube Learn Kotlin with the Kotlin Team: Advent of Code 2020 #9

다음 단계는 무엇입니까?