백준-Node.js-1408, 24

송철진·2023년 2월 19일
0

백준-Node.js

목록 보기
30/69

풀이

const fs = require('fs')
const [ curr, dead ] = fs.readFileSync('/dev/stdin').toString().trim()
                         .split('\n').map(el => el.split(':').map(Number))

const solution = (curr, dead) => {
  let [ch, cm, cs] = curr
  let [dh, dm, ds] = dead
  let [rh, rm, rs] = []
  if(ds >= cs){
    rs = ds - cs
  }else{
    rs = 60 + ds - cs
    dm -= 1
  }
  if(dm >= cm){
    rm = dm - cm
  }else{
    rm = 60 + dm - cm
    dh -= 1
  }
  if(dh >= ch){
    rh = dh - ch
  }else{
    rh = 24 + dh - ch
  }
  
  return [rh, rm, rs].map(el => ('0' + el).slice(-2)).join(':')
}
console.log(solution(curr, dead))

현재 시간을 curr = ['13', '52', '30'],
마감 시간을 dead = ['14', '00', '00'] 라고 할 때

마감(초)이 현재(초)보다 크면 서로 빼고
작으면 그냥 서로 뺀 값에 60을 더한다. 그리고 마감(분)에 1을 뺀다

마감(분)이 현재(분)보다 크면 서로 빼고
작으면 그냥 서로 뺀 값에 60을 더한다. 그리고 마감(시)에 1을 뺀다

마감(시)이 현재(시)보다 크면 서로 빼고
작으면 그냥 서로 뺀 값에 24를 더한다.

결과값x가 한자리수 일 경우 '0x'로 표기해주어야 하므로
결과값 배열을 순회하여 각 요소 앞에 문자 '0'을 더하고 slice() 메서드로 뒤에서 2번째까지만 잘라서 매핑한다.
':'을 기준으로 join()하여 반환한다.

profile
검색하고 기록하며 학습하는 백엔드 개발자

0개의 댓글