© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 1408 - 24

2024-04-28
BOJ
브론즈 II
javascript
원본 문제 보기
수학
구현

문제

BOJ 1408 - 24

현재 시각과 임무 시작 시각이 주어질 때, 남은 시간을 HH:MM:SS 형식으로 출력하라.

입력

첫째 줄에 현재 시각, 둘째 줄에 임무 시작 시각이 HH:MM:SS 형식으로 주어진다.

출력

남은 시간을 HH:MM:SS 형식으로 출력한다.

예제

입력출력
10:10:10 11:11:1101:01:01

풀이

시/분/초 각각에서 빌림(borrow) 처리하며 차이를 계산한다.

  1. 초 차이가 음수이면 60을 더하고 분에서 1을 뺀다
  2. 분 차이가 음수이면 60을 더하고 시에서 1을 뺀다
  3. 시 차이가 음수이면 24를 더한다 (다음 날 넘어가는 경우)
  4. 2자리로 패딩하여 출력한다

핵심 아이디어: 60진법/24진법 뺄셈의 빌림 처리를 순서대로 적용한다.

코드

const solution = (input) => {
  const [h, m, s] = input[0].split(":").map(Number);
  let [sh, sm, ss] = input[1].split(":").map(Number);
  let [rh, rm, rs] = [];
  if (ss >= s) rs = ss - s; else { rs = 60 + ss - s; sm -= 1; }
  if (sm >= m) rm = sm - m; else { rm = 60 + sm - m; sh -= 1; }
  if (sh >= h) rh = sh - h; else rh = 24 + sh - h;
  return [rh, rm, rs].map((v) => (String(v).length === 1 ? "0" + String(v) : v)).join(":");
};
const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
console.log(solution(input));

복잡도

  • 시간: O(1)
  • 공간: O(1)