개발자로 전향중

2번. 몇 시간 몇 분 했더라? 본문

자료구조&알고리즘

2번. 몇 시간 몇 분 했더라?

hovinee 2022. 1. 20. 18:20
현아는 항해에서 한 주 동안 몇 시간 동안 공부했는 지 기록할 수 있는 알고리즘을 만드는데 성공했다. 공부시간을 꼼꼼하게 관리하는 현아는 이번에 분 단위까지 계산할 수 있는 알고리즘을 만들기로 마음을 먹었다.
항해의 체크인 페이지에는 몇가지 조건이 있는데 이를 만족하는 알고리즘을 만들어보자.
체크아웃을 할 때 익일 시간은 24+a 로 계산한다. 즉 새벽 2시는 24+2 인 26으로 표기한다.
체크인 페이지는 새벽 5시까지 체크아웃이 되어 있지 않으면 체크아웃을 깜빡한 것으로 간주한다.
따라서 체크인 시스템은 새벽 5시 정각이나, 새벽 5시를 넘겨서 체크아웃을 하게 되면 자동으로 체크아웃을 오후 9시(21:00)로 한 것으로 처리한다.
 

제한 조건

체크인(checkin)과 체크아웃(checkout)을 진행한 시간이 담긴 배열 두 개가 주어진다.
각 배열에는 월요일부터 일요일까지 체크인/아웃을 한 시간이 담겨있다.
checkin과 checkout 배열의 길이는 각각 7 이다.
 
result는 반드시 “00시간 00분” 형식의 문자열로 출력해주셔야 합니다.
입출력 예
검색
 
checkin
 
checkout
 
result
["7:51" ,"8:58", "8:56", "8:35", "9:00", "8:46", "8:56"]
["22:24" ,"21:51", "25:30", "29:10", "29:12", "22:15", "21:31"]
“94시간 29분”
 
지정 입력값
검색
 
checkin
 
checkout
 
result
["8:42", "9:00", "8:50", "8:47", "9:01", "8:51", "8:59"]
["21:42", "23:10", "25:30", "29:10", "23:11", "26:44", "29:26"]
“100시간 7분”
 
function solution(arr1, arr2){
	let answer=0;
  let a = 0
  let b = 0
  let c = 0
  let d = 0
  
  for(let i=0;i<arr1.length;i++){
    a += Number(arr1[i].split(':')[0])
    b += Number(arr1[i].split(':')[1])      //앞자리 시간
  }


  for (let i=0;i<arr1.length;i++){
    if(Number(arr2[i].split(':')[0])>28) {
      c += 21
      d += 0
    } else {
      c += Number(arr2[i].split(':')[0])
      d += Number(arr2[i].split(':')[1])
    }
} 
  a+=parseInt(b/60)
  b = b%60

  c+=parseInt(d/60)
  d = d%60
  
  if(d>b){
    return `${c-a}시간 ${d-b}분`
  } else {
    return `${c-a-1}시간 ${d-b+60}분`
  }
}
  let arr1=["8:42", "9:00", "8:50", "8:47", "9:01", "8:51", "8:59"];
  let arr2=["21:42", "23:10", "25:30", "29:10", "23:11", "26:44", "29:26"];
console.log(solution(arr1, arr2))