BRAG
← 자랑 목록으로
💻 코드/앱· 2026년 6월 15일

술자리 다음 날, "지금 운전해도 될까?"에서 시작한 BAC 계산기

Widmark 공식으로 혈중알코올농도를 추정하고 운전 가능 시각까지 분 단위로 찍어주는 웹앱을 만들었어요.

빠찌찌까까
Lv.1 → Lv.20 / 100 XP
팔로워 0
0
자랑
0
누적
0
누적
프로필 보기 →
10 2
ReactTypeScriptViteTailwind CSSRecharts

자랑 포인트

  • Widmark 공식 + 시간당 0.015% 분해율로 현재 BAC를 실시간 추정
  • 이분 탐색으로 도로교통법 기준(0.03%) 미만 도달 시각을 분 단위로 산출
  • 위험도에 따라 빨강·앰버·에메랄드로 바뀌는 다크 버건디 테마와 BAC 감소 곡선 시각화

회식 자리에서 누군가 "나 이제 운전해도 되나?"라고 물었을 때, 아무도 제대로 답하지 못했던 순간이 있었어요. 대충 "한두 시간 자고 가"라는 말만 오갔죠. 그 애매한 감(感) 대신 숫자로 답을 주고 싶어서 이 앱을 만들기 시작했습니다.

앱 화면

주요 기능

처음엔 단순히 "소주 몇 잔 = BAC 얼마"만 보여주려 했는데, 만들다 보니 욕심이 붙었어요.

  • 소주·맥주·와인·막걸리·위스키·하이볼·사케·칵테일까지 9가지 음료를 프리셋으로 골라 바로 기록할 수 있어요. 잔마다 마신 시각·도수·용량도 자유롭게 손볼 수 있습니다.
  • Widmark 공식에 시간당 0.015% 분해율을 더해 현재 BAC를 실시간으로 추정합니다.
  • 가장 공들인 부분은 운전 가능 시각 예측이에요. 도로교통법 기준(0.03%) 아래로 떨어지는 시점을 이분 탐색으로 분 단위까지 계산합니다.
  • 시간별 BAC 감소 곡선을 면허정지·취소 기준선과 함께 그래프로 보여주고, 위험도에 따라 빨강·앰버·에메랄드로 색이 바뀌어 한눈에 들어와요.

전체 화면

기술 이야기

막혔던 건 의외로 "운전 가능 시각"을 어떻게 정확히 뽑느냐였어요. 여러 잔의 기여도를 합산하면 BAC 곡선이 단순 직선이 아니라서, 단순 나눗셈으로는 임계값 도달 시각이 어긋나더라고요. 결국 이분 탐색으로 0.03% 미만이 되는 순간을 분 단위로 좁혀 들어가는 방식으로 풀었습니다.

스택은 React 19 + TypeScript 5에 Vite 7을 얹었고, 차트는 Recharts로 그렸어요. 술집 분위기를 내고 싶어서 다크 버건디 배경에 위스키 앰버를 포인트로 준 테마를 직접 잡았는데, 위험 상태에 따라 배경 그라데이션이 부드럽게 바뀌는 디테일이 개인적으로 제일 마음에 듭니다. 입력값은 localStorage에 저장해서 새로고침해도 그대로 남아요.

물론 이 계산은 통계적 추정치라 실제와 다를 수 있어요. 그래도 "감으로 운전"보다는 훨씬 나은 기준선을 주는 앱이 됐다고 생각합니다. 가장 안전한 건 결국 "마셨으면 운전 안 하기"지만요.

댓글 2

0/1000
아직 댓글이 없어요. 첫 댓글을 남겨보세요!