피드로 돌아가기
Printing Department
Dev.toDev.to
Backend

개발자가 2D 그리드 패딩 전략과 반복 상태 변경 추적으로 Advent of Code 퍼즐 Part 1·2 동시 해결

Printing Department

Robert Mion2026년 3월 28일6intermediate

Context

2D 그리드 기반 퍼즐 문제에서 경계 범위 확인(out-of-bounds) 처리와 인접 셀 검사 로직이 필요했으며, Part 2에서는 상태 변경이 수렴할 때까지 반복 실행해야 하는 과제가 있었습니다.

Technical Solution

  • 그리드 패딩 처리: 문자열 결합을 이용해 원본 그리드를 '.' 문자로 둘러싸기하여 out-of-bounds 에러 제거
  • 인접 셀 검사: 8방향 좌표 배열 [[-1,-1], [-1,0], ..., [1,1]]과 map/filter 체이닝으로 인접 '@' 개수 계산
  • 단일 패스 검증: grid[row][col] == '@' && 인접 '@' 개수 < 4인 셀을 카운트하는 한 줄 조건문
  • 반복 상태 변경: do-while 루프에서 changers 배열로 제거할 셀 위치를 축적 후 forEach로 grid 변경 및 배열 초기화
  • 수렴 조건: changers.length > 0일 때까지 반복하여 최종 상태에 도달할 때까지 순회

Impact

Part 1에서 예제 입력에 대해 정답 13 도출 및 실제 퍼즐 입력 통과; Part 2에서도 반복 로직 적용 후 즉시 정답 생성 및 통과 확인.

Key Takeaway

그리드 기반 알고리즘에서 경계 처리를 위해 사전 패딩하면 루프 내 조건 검사를 단순화할 수 있으며, 상태 변경이 필요한 시뮬레이션은 변경 대상을 별도 배열에 기록한 후 일괄 적용하는 방식으로 반복 가능한 구조를 유지할 수 있습니다.


그리드 기반 탐색 알고리즘을 구현하는 환경에서 경계 패딩(border padding)을 초기 단계에 적용하면 루프 내 범위 검사 조건을 제거할 수 있으며, 상태 업데이트가 필요한 경우 변경 대상을 수집 후 일괄 적용하는 패턴으로 다중 반복을 안전하게 처리할 수 있습니다.

원문 읽기