동혁이는 NBA 농구 경기를 즐겨 본다. 동혁이는 골이 들어갈 때 마다 골이 들어간 시간과 팀을 적는 이상한 취미를 가지고 있다.
농구 경기는 정확히 48분동안 진행된다. 각 팀이 몇 분동안 이기고 있었는지 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 골이 들어간 횟수 N(1<=N<=100)이 주어진다. 둘째 줄부터 N개의 줄에 득점 정보가 주어진다. 득점 정보는 득점한 팀의 번호와 득점한 시간으로 이루어져 있다. 팀 번호는 1 또는 2이다. 득점한 시간은 MM:SS(분:초) 형식이며, 분과 초가 한자리 일 경우 첫째자리가 0이다. 분은 0보다 크거나 같고, 47보다 작거나 같으며, 초는 0보다 크거나 같고, 59보다 작거나 같다. 득점 시간이 겹치는 경우는 없다.
출력
첫째 줄에 1번 팀이 이기고 있던 시간, 둘째 줄에 2번 팀이 이기고 있던 시간을 출력한다. 시간은 입력과 같은 형식(MM:SS)으로 출력한다.
예제 입력 1
1
1 20:00
예제 출력 1
28:00
00:00
예제 입력 2
3
1 01:10
2 21:10
2 31:30
예제 출력 2
20:00
16:30
예제 입력 3
5
1 01:10
1 02:20
2 45:30
2 46:40
2 47:50
예제 출력 3
45:30
00:10
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');
const N = +input[0]; // 골이 들어간 횟수
let scores = [];
for (let i = 1; i <= N; i += 1) {
let [team, time] = input[i].split(' ');
time = time.split(':'); // 골 넣은 시간 초로 변경하기 위해 : 없애기
scores.push([+team, +time[0] * 60 + +time[1]]);
}
const lastTime = 48 * 60; // 경기 시간 초 단위로 변경
let teamScore = [0, 0]; // 각 팀의 골 넣은 횟수
let teamTime = [0, 0]; // 각 팀 이기고 있는 시간 카운트
let index = 0;
let [team, time] = scores[index]; // 골 넣은 리스트에서 팀 번호와 시간 추출
// 0초부터 경기시간(48분)까지 타이머 동작
for (let timer = 0; timer < lastTime; timer += 1) {
// 골 넣은 시간이 되었을 때
if (time === timer) {
teamScore[team - 1] += 1; // 해당 팀 골 넣은 횟수 카운트
if (index < N - 1) [team, time] = scores[++index]; // 다음 골 넣은 팀으로 이동(단, 마지막 팀인 경우는 제외)
}
// 1팀이 이기고 있는 경우 1팀 이기고 있는 시간 카운트
if (teamScore[0] > teamScore[1]) teamTime[0] += 1;
// 2팀이 이기고 있는 경우 2팀 이기고 있는 시간 카운트
else if (teamScore[0] < teamScore[1]) teamTime[1] += 1;
}
let answer = '';
teamTime.map((team) => {
let minutes = parseInt(team / 60) + ''; // 다시 분으로 변경
let seconds = (team % 60) + '';
// 00:00 형태로 맞추기 위해 padStart 이용해서 두자리 수로 만들기
answer += `${minutes.padStart(2, 0)}:${seconds.padStart(2, 0)}\n`;
});
answer = answer.trimEnd();
console.log(answer);
분:초
를 초로 변경padStart
이용해서 00:00 형태로 맞추기