아카이브사이트맵
© 2026 Rayon. All rights reserved.
DevDay
아티클랭킹스페이스채용
카카오 favicon카카오

카카오톡 예약하기, 캘린더 UI 구현 비하인드 스토리

by DD
2026-04-22
2개월 전
조회수 46

카카오톡 예약하기 서비스의 FE 개발자가 예약 관리 탭의 캘린더 UI 구현 과정을 회고

타임 블록(Time Block) 형태의 캘린더 UI 구현을 위해 배치 및 확장 알고리즘 설계

이용 시간, 소요 시간을 고려한 예약 블록 배치 전략 및 그래프 자료구조 활용

예외 케이스 발생 및 해결을 통해 UI 완성도(UI Completion)를 높임

타임 블록 캘린더 UI 구현의 핵심 요구사항

본문에서는 카카오톡 예약하기 서비스의 캘린더 UI 구현을 위한 핵심 요구사항을 제시한다.

최대 10개의 예약을 한 시간대에 표시하고, 각 예약은 최대 6시간의 소요 시간을 가질 수 있다.

예약 블록들이 빈 공간 없이 최대한 잘 보이도록 배치해야 한다.

이러한 요구사항을 바탕으로, 개발자는 예약 데이터(Reservation Data)를 효율적으로 시각화하는 알고리즘을 설계해야 했다.

이러한 요구사항은 캘린더 UI 구현의 복잡성을 높이는 주요 원인이 되었다.

예약 블록 배치를 위한 두 가지 핵심 규칙

글에 따르면, 캘린더 UI에서 예약 블록을 효율적으로 배치하기 위해 두 가지 핵심 규칙을 적용했다.

이용 시간이 이른 순서대로 정렬: 판매자가 가장 먼저 확인해야 할 예약을 우선 배치하여 사용자 경험(User Experience)을 개선한다.

같은 시간 내 소요 시간이 긴 순서대로 정렬: 블록 확장을 가로막는 긴 예약 건을 먼저 배치하여 공간 효율성(Space Efficiency)을 높인다.

이러한 규칙들은 캘린더 UI의 가독성을 높이고, 예약 정보를 직관적으로 파악할 수 있도록 돕는다.

그래프 자료구조를 활용한 예약 블록 확장 전략

본문에서는 예약 블록의 확장을 위해 그래프(Graph) 자료구조를 활용한 방법을 설명한다.

각 예약 건을 그래프의 노드로 표현하고, DFS(Depth-First Search) 알고리즘을 통해 각 노드의 깊이(Depth)와 최대 거리(maxLength)를 계산한다.

계산된 값을 기반으로 각 노드의 left와 width 값을 계산하여 블록을 확장한다.

예외 케이스 발생 시, 남은 공간을 찾아 최소 공간만큼 노드를 확장하는 방식으로 문제를 해결한다.

이러한 그래프 기반의 확장 전략은 복잡한 예약 상황에서도 유연한 UI(Flexible UI)를 구현하는 데 기여한다.

예외 케이스 처리 및 UI 완성도 향상

글에서는 캘린더 UI 구현 과정에서 발생한 예외 케이스와 해결 방법을 제시한다.

상위 루트 노드로 인해 하위 노드가 채워지지 않는 경우, 남은 공간을 찾아 노드 확장을 통해 문제를 해결한다.

최소 공간만큼 확장하는 방식을 택하여 UI의 일관성을 유지한다.

이러한 예외 처리 과정을 통해 캘린더 UI의 완성도를 높이고, 다양한 예약 상황에 대응할 수 있도록 한다.

결과적으로, 예외 처리는 UI의 안정성(UI Stability)을 확보하는 데 중요한 역할을 한다.

카카오톡 예약하기에서 그려 본 캘린더
중급
아키텍처
Frontend
Frontend
원문 읽기
원문 읽기

댓글 0

첫 번째 댓글을 남겨보세요!

관련 추천 글

FE Ops 6개월, 프론트엔드와 데이터 도메인 사이에서의 성장기록

벨로그 로고

8년차 개발자의 험난한 이직기, 결국 D사에 합격!

벨로그 로고

WeCoded 챌린지 수상자 발표! 개발자들의 감동적인 이야기와 프론트엔드 기술의 만남

데브투 로고

AI 엔지니어들이 백로그를 해결해 드립니다!

프로덕트 헌트 로고

셀카 한 장으로 옷장 완성! AI 스타일리스트 Layered 출시

프로덕트 헌트 로고

무신사, Self-POS 도입으로 오프라인 쇼핑 경험 혁신!

무신사 로고
카카오 favicon카카오
중급
아키텍처
Frontend
Frontend

관련 추천 글

FE Ops 6개월, 프론트엔드와 데이터 도메인 사이에서의 성장기록

벨로그 로고

8년차 개발자의 험난한 이직기, 결국 D사에 합격!

벨로그 로고

WeCoded 챌린지 수상자 발표! 개발자들의 감동적인 이야기와 프론트엔드 기술의 만남

데브투 로고