[알고리즘] 백준 2852 NBA농구 (JS)

Daon·2023년 3월 27일
0
post-thumbnail

NBA 농구는 시합 기록을 하는 프로그램을 만드는 작업이다.

요구사항

  1. 이기고있는 팀의 시간을 기록할 것

내 코드

function solution(n, nums) {
  let A = 0,
    B = 0,
    aSum = 0,
    bSum = 0,
    prev = 0;
  for (let i = 0; i < n; i++) {
    let curScore = nums[i][0];
    let curTime = changeToM(nums[i][1]);
    if (A > B) {
      aSum += curTime - prev;
    } else if (B > A) {
      bSum += curTime - prev;
    }
    curScore === 1 ? A++ : B++;
    prev = curTime;
  }
  if (A > B) {
    aSum += 2880 - prev;
  } else if (B > A) {
    bSum += 2880 - prev;
  }
  console.log(changeToH(aSum));
  console.log(changeToH(bSum));
}
function changeToH(time) {
  return Math.floor(time / 60) + ":" + (time % 60 === 0 ? "00" : time % 60);
}
function changeToM(time) {
  return Number(time.substr(0, 2)) * 60 + Number(time.substr(3, 5));
}

let nums = [
  [1, "01:10"],
  [2, "21:10"],
  [2, "31:30"],
];
solution(3, nums);

먼저 문자열로 주어진 시간과 분을 분으로 합산하여 시간을 계산하였다.
그리고 curScore === 1 ? A++ : B++; 점수 추가를 반복문 맨 아래에 둔 이유는
A팀이 점수를 얻음으로 이기고 있는 시간을 구해야 하기 때문이다.
1. A팀의 점수를 기록, prev에 현재 시간을 저장
2. A팀이 이기고있다면 현재 시간 - prev로 이기고 있던 시간을 저장
3. 동점되었다면 prev에만 현재 시간을 저장
4. B팀이 이기고있다면 현재시간 - prev로 이기고 있던 시간을 저장
이런 과정으로 시간이 저장된다.

profile
같이 일하고싶은 그런 개발자!

0개의 댓글