https://www.acmicpc.net/problem/2852
2852번: NBA 농구
첫째 줄에 골이 들어간 횟수 N(1<=N<=100)이 주어진다. 둘째 줄부터 N개의 줄에 득점 정보가 주어진다. 득점 정보는 득점한 팀의 번호와 득점한 시간으로 이루어져 있다. 팀 번호는 1 또는 2이다. 득
www.acmicpc.net
알고리즘 : 구현
/**
* 제출용. 아래 로컬용을 지우고 제출하자.
*/
// let input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n")
/**
* 로컬용, 예제.txt를 생성해서 예제를 복붙하자.
*/
let input = require("fs")
.readFileSync("input.txt") //"/dev/stdin"
.toString()
.split("\n")
.map((val) => val.trim());
function solution() {
// 농구는 48분간 진행
// 각 팀이 몇분간 이기고 있었는지 표시
let t = +input.shift();
let aScore = 0;
let bScore = 0;
let aTime = 0;
let bTime = 0;
let cur = 0;
let team1 = [0,0];
let team2 = [0,0];
while(t--){
let temp = input.shift().split(" ");
let team = +temp.shift();
let [m,s] = temp.shift().split(":").map(v=>+v);
const time = (+m * 60) + (+s);
if(aScore > bScore) {
aTime += time - cur;
} else if (aScore < bScore) {
bTime += time - cur;
}
if(team === 1) {
aScore++;
} else {
bScore++;
}
cur = time;
}
if(aScore > bScore) {
aTime += 48 * 60 - cur;
} else if(aScore < bScore) {
bTime += 48 * 60 - cur;
}
team1[0] = Math.floor(aTime / 60);
team1[1] = aTime % 60;
team2[0] = Math.floor(bTime / 60);
team2[1] = bTime % 60;
team1 = team1.map(v=>String(v).padStart(2,'0')).join(":");
team2 = team2.map(v=>String(v).padStart(2,'0')).join(":");
console.log(team1);
console.log(team2);
}
solution();
'코딩테스트(알고리즘) > baekjoon' 카테고리의 다른 글
[baekjoon] 2636 치즈 (Javascript) (0) | 2023.01.26 |
---|---|
[baekjoon] 14502 연구소 (Javascript) (1) | 2023.01.26 |
[baekjoon] 3474 교수가 된 현우 (javascript,c++) (1) | 2023.01.23 |
[baekjoon] 10709 기상캐스터 (0) | 2023.01.23 |
[baekjoon] 4659 비밀번호 발음하기 (0) | 2023.01.13 |