Skip to main content

Command Palette

Search for a command to run...

Advent of Code 커뮤니티에서 즐거운 시간 보내기 - 신입 기술 개발자의 삶 #2

Published
Advent of Code 커뮤니티에서 즐거운 시간 보내기 - 신입 기술 개발자의 삶 #2

원문: Mary Lo, "Life as a Graduate Tech Developer #2: Having fun in the Advent of Code community"

이번 달 초 IMG 아레나의 대졸 신입사원 프로그램(graduate programme)을 수료하고 주니어 소프트웨어 엔지니어가 되었습니다!

프로그램은 끝났지만 기억에 남는 순간들을 글로 옮기고 싶었어요. 신입 개발자 시리즈의 두 번째 이야기 "커뮤니티의 도움을 받은 첫 Advent of Code 모험기"를 소개합니다.

학창 시절에는 모든 것을 혼자서 해낼 수 있다고 생각했어요. 하지만 나이가 들면서 제 생각이 바뀌었죠. 가끔 혼자 알아서 일을 처리할 수 있지만, 생각하는 만큼 제가 강하지는 않더라고요. 주변 사람들에게 의지하고 도움을 받으며 앞으로 나아갈 동기를 얻고 있습니다.

"혼자 한다면 할 수 있는 일이 너무 적지만, 함께 한다면 아주 많은 일을 할 수 있습니다." - 헬렌 켈러

제 동료들은 비슷한 관심사를 가진 사람들을 연결하고 커뮤니티를 형성하기 위해 Slack 채널을 만들곤 해요. 커뮤니티 내에서 특정 주제의 정보를 공유하고 토론을 장려해요. 열정적인 사람들로 둘러싸여 있으면 에너지가 넘치고 생각지도 못했던 수준까지 나아갈 수 있어요.

지난 12월 Advent of Code 커뮤니티를 통해 퍼즐 풀기 한계에 도전하게 된 계기를 이야기하려고 합니다.

"Advent of Code"를 처음 들어보셨나요? Advent of Code는 Eric Wastl이 만든 온라인 연례 행사며, 12월 1일부터 12월 25일까지 매일 2문제씩 공개됩니다. 시간이 지날수록 퍼즐이 복잡해지고 참가자들이 퍼즐을 푸는 데 흥미를 느끼게 되죠.

제 모험기를 본격적으로 소개하기 전에, Advent of Code 커뮤니티의 주최자 Lewis King에게 진심으로 감사의 인사를 전하고 싶습니다. 커뮤니티를 만들어 주시고 환상적인 토론의 장을 제공해 주셔서 감사합니다. 또한 경품을 마련해 주셔서 참가자들의 열정과 참여도가 한층 더 높아졌습니다. 이번 이벤트에 참여하며 다른 사람들로부터 배우는 것이 즐거웠습니다.

구미가 당기는 초대 메세지와 놀라운 상품들, Lewis King이 찍음

구미가 당기는 초대 메세지와 놀라운 상품들 | 사진: Lewis King

참가 첫 날, 거짓말하지 않고 1시간 동안 두 번째 문제를 못 풀고 있을 때 정말 포기하고 싶었어요. 문자열에서 가장 앞자리와 가장 뒷자리 숫자를 찾는 문제인데, 각 숫자가 숫자나 단어의 형태가 될 수 있었어요. 예를 들어 문자열이 "two1nine"이면 29, "4nineeightseven2"면 42가 정답이죠.

제가 간과한 부분이 있었다는 걸 알았지만 잘못된 결과로 이어지는 부분을 찾지 못했어요. 다행히도 이 여정에서 저는 혼자가 아니었어요. 저와 유사한 경험을 했던 커뮤니티 사람들이 힌트를 공유해 주었어요. 얼마간 힌트를 보고 난 후 저의 접근에서 잘못된 로직을 찾아냈고 첫째 날 문제를 해결했습니다.

문제를 푸는 첫 날, 첫 번째 문제에서 자신이 천재라고 생각하며 좋아하다가 두 번째 문제에서 좌절하는 애니메이션 밈 사진

David가 채널에 올린 이 이미지가 딱 제가 느낀 감정이에요.

저는 효율적인 접근 방식으로 문제를 아름답게 해결하려고 노력했어요. 어떤 문제에서는 무차별 대입이 생각해낼 수 있는 유일한 아이디어였죠. 간단한 로직으로 여러 번 반복하는 코드를 작성했고 컴퓨터가 실행하도록 했죠. 때로는 먹혀 들었고, 때로는 실패했습니다.

문제를 푸는데 컴퓨터가 계산하는 시간이 4분 50초임을 보여주는 사진

5일 차 파트 2

문제를 푸는데 컴퓨터가 계산하는 시간이 15분 56초임을 보여주는 사진

14일 차 파트 2

Advent of Code의 퍼즐은 일반적인 업무 과제와는 달라요. 저에게는 대학에서 코딩을 배울 때 했던 과제와 비슷했어요. 퍼즐을 풀다 보니, 문제를 작게 쪼개어서 해결 방법을 브레인스토밍하던 옛날 시절로 돌아간 것 같았어요.

12월의 첫 2주 동안 여러 퍼즐을 풀었어요. 가장 기억에 남는 것은 10일 차 문제였습니다. 저에게는 큰 도전이었어요. 보통 하루가 걸리던 다른 문제와 달리 데이터 구조를 다듬고 답을 찾기 위한 전략을 도출하는 데 이틀이 걸렸습니다.

10일 차 퍼즐은 라인을 읽어 연속된 루프를 만들고 루프로 둘러싸인 면적을 찾는 문제였어요. 문제가 복잡해서 여러 질문으로 나누었어요. 예를 들어 타일의 유형과 좌표를 찾는 클래스를 어떻게 설계해야 할지, 루프 내에 있는지 바깥에 있는지 어떻게 판별하는지 말이죠.

간단히 메모하는 것은 머릿속 아이디어를 정리하는 데 도움이 됩니다. 디버깅에도 효과적이고요!

4달 전에 제가 푼 문제임에도 정확히 어떤 문제인지 해답을 어떻게 생각해 냈는지 잊어버렸습니다. 하지만 12월에 제가 얼마나 신이 났었는지는 기억해요. 제가 할 수 있는 일의 한계에 부딪히는 것이 즐거웠어요. 게다가 동적 프로그래밍, 플러드 필, 픽의 정리 같은 여러 새로운 개념도 배울 수 있었어요.

12월의 아침마다 새로운 두 문제를 푸는 것은 재밌었어요. 정답을 맞히면 별을 획득하는 Advent of Code의 규칙이 좋아요. 언어 사용에 제한이 없고 데이터 구조 요구사항이 없어요. 엑셀 함수를 사용해 정답을 계산하는 것처럼 창의적으로 퍼즐을 풀 수도 있죠. 게다가 커뮤니티 내에서 경쟁이 존재하지 않아요. 우리는 함께 퍼즐을 완성하기 위해 서로를 응원하는 친구들이죠.

Advent of Code 커뮤니티는 마법 같아요. 커뮤니티에서 Lewis, Fran, Alex I., David, Chris, Alex S., William, Mateusz 등 여러 사람을 만나게 되어 영광입니다. 여러분들은 퍼즐을 푸는 다양하고 창의적인 전략을 보여주었어요. 대화를 통해 새로운 세계를 탐험할 수 있었고, 도전이 힘들어졌을 때조차 계속해서 참여를 이어 나갈 수 있었습니다.

커뮤니티에 참여하면서 제가 얻은 몇 가지 교훈을 소개할게요.

  • 여러분은 생각보다 훨씬 더 높은 잠재력을 가지고 있어요. 자신을 믿으세요. 여러분은 할 수 있어요! ❤️

  • 서로 지지해 주는 커뮤니티에 속해 있으면 능력을 인정받고 성장할 수 있어요.

  • 대화에 참여하면 시야가 넓어져요. 사람들이 이야기하는 모든 것을 알 수는 없지만 알아 갈 수 있습니다.

제 첫 Advent of Code는 어떻게 끝났을까요? 50개 중 38개를 풀어 자랑스럽습니다. 종료일이 가까워질수록 난이도가 높아져 아직 해결하지 못한 퍼즐이 남아있습니다.

Screenshot of my Advent of Code home page, achieving 38 stars.

⭐️

저는 Java로 퍼즐을 풀었어요. 읽기 쉬운 코드를 작성하기 위해 노력했고 유닛 테스트 작성과 스트림 API 활용도 연습했어요. 제 깃허브 저장소에서 동작하는 코드를 확인할 수 있어요. (https://github.com/marylo-imgarena/advent-of-code-2023/)

Advent of Code에 관심이 가고 한 번 도전해 보고 싶다면, 이 링크를 방문해 보세요. (https://adventofcode.com/)

"신입 기술 개발자의 삶" 시리즈 소개

2023년 11월 시리즈의 첫 글을 발행하기 시작했어요. IMG 아레나의 대졸 신입 개발자로 일하면서 배움을 기록하고 개인적인 생각을 공유하기 위해 시작했어요.

1년 간의 대졸 신입사원 프로그램은 이제 끝났지만, 아직 생생하게 남은 감정을 담아 제 경험을 써 내려가고 싶어요.

이전 이야기도 확인해 보세요!

#1: 자신을 이해하기 — 깨닫고 적응하기

자기 소개

저는 Mary Lo입니다. 홍콩에서 교육을 받고 자랐습니다. 2019년에 커리어를 시작했고, 3년의 경력 이후 팬데믹으로 인해 사고방식이 바뀌었습니다. 익숙한 환경 너머를 탐험해 보고 싶었고, 2022년 여름 새로운 모험을 하기 위해 런던에 왔습니다. 2023년 4월부터 IMG 아레나에서 일하고 있습니다.

예술과 기술 그리고 스토리텔링을 좋아합니다.

An acrylic piece depicting an Australian Labradoodle with detailed brushstrokes.

호주 래브라두들을 그린 나의 최근 아크릴 작품

More from this blog

나의 오픈 소스 시작 이야기

원문: TkDoDo, “My Open Source Origin Story“ 가끔씩 제가 받는 질문이 하나 있는데, 바로 오픈 소스와 리액트 쿼리(React Query)를 어떻게 시작하게 되었는지입니다. 저의 기본 원칙은 어떤 질문을 세 번 받으면 더 이상 답변할 필요가 없도록 질문에 대해 글로 쓴다는 것입니다. 하지만 이 질문은 주로 직접 만났을 때 받는 질문이라 글로 작성할 생각을 한 적이 없었습니다. 최근에 오프라인 컨퍼런스에 더 많이 참...

Jul 30, 2025
나의 오픈 소스 시작 이야기

이더넷이란?

원문: baeldung, “What Is Ethernet?“ 1. 소개 이 튜토리얼에서는 이더넷(Ethernet)과 이를 통해 이루어지는 데이터 전송에 대해 알아보겠습니다. 2. 이더넷이란? 이더넷은 근거리 통신망(LAN) 또는 광역 네트워크(WAN) 내에서 장치들이 데이터를 주고받고 통신하기 쉽게 만들어 주는 널리 사용되는 기술입니다. 컴퓨터, 프린터, 서버는 물론 스마트 홈 기기까지도 이더넷으로 연결됩니다. 가정이나 사무실처럼 제한된 공간...

Jul 20, 2025
이더넷이란?

포스트 개발자 시대

원문: Josh W. Comeau, "The Post-Developer Era" 2년 전 2023년 3월, "프런트엔드 개발의 종말"이라는 제목의 블로그 글을 발행했습니다. 이는 OpenAI가 GPT-4 쇼케이스를 발표한 직후였고, 당시 업계 분위기는 머지않아 인간 소프트웨어 개발자는 필요 없어지고 앞으로는 소프트웨어 개발을 AI가 전담하게 될 것이라는 전망이 지배적이었습니다. 저는 이런 주장에 회의적이었고 그 블로그 글에서 소프트웨어 개발...

Jul 10, 2025
포스트 개발자 시대

널리 사용되는 네트워크 프로토콜

원문: Subham Datta, "Popular Network Protocols" 1. 개요 이 튜토리얼에서는 가장 널리 사용되고 인기 있는 네트워크 프로토콜들을 소개합니다. 2. 네트워크 프로토콜 소개 의사소통과 정보 교환은 현대 사회에서 가장 중요하고 강력한 역량입니다. 컴퓨터 네트워킹이란 여러 대의 컴퓨터와 장치를 케이블이나 위성을 통해 서로 연결하여, 거리와 상관없이 정보·자원·데이터베이스 등을 공유할 수 있게 하는 것을 말합니다. 네...

Jun 20, 2025
널리 사용되는 네트워크 프로토콜

커맨드 라인에 편해지는 법

원문: Julia Evans, "What helps people get comfortable on the command line?" 가끔 커맨드 라인을 써야 하는 친구들과 이야기하다 보면 많은 이들이 여전히 터미널을 두려워하고 있다는 걸 느낍니다. 그럴 때마다 어떤 조언을 할지 잘 모르겠더라고요. 저는 워낙 오래전부터 터미널을 써왔기 때문이죠. 그래서 Mastodon에 이렇게 물어봤습니다. 최근 1~3년 사이에 터미널 공포(?)를 극복한 분...

Jun 10, 2025
커맨드 라인에 편해지는 법
C

CodeSnap

84 posts

한국어로 전달하는 웹 개발 번역 매거진