NBA 농구는 시합 기록을 하는 프로그램을 만드는 작업이다.
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로 이기고 있던 시간을 저장
이런 과정으로 시간이 저장된다.