BOJ 16863, Score!
ProblemSolving ·단순 구현문제입니다.
풀이
문제 자체가 어려운 문제는 아니지만 처리해줘야할 부분이 많아서 상당히 힘들게 풀었다.
total은 총 점수, lead는 앞서고 있었던 총 시간, ns는 현재 득점 시, nb는 현재 득점 분, ls는 직전 득점 시, lb는 직전 득점 분, leadteam은 이기고있는 팀이다.
변수들만 잘 정리하고 문제만 잘 이해한다면 어려운 문제는 아니다. 하지만 나처럼 헤맬 사람들이 있을 것 같아서 포스팅하기로 했다! 구현연습하기에 나쁘지 않은 문제같다.
한번정도 풀길 추천하는 문제입니다.
#include<cstring>
#include<string>
#include<algorithm>
#include<iostream>
#include<stdio.h>
#include<vector>
#include<cmath>
using namespace std;
int totala, totalh,alead,hlead, ns, nb, ls, lb, hscore, ascore;
char c,leadteam;
int main()
{
int n;
scanf("%d",&n);
for (int i = 0; i < n; i++)
{
scanf(" %c",&c);
if (totala > totalh)
leadteam = 'a';
if (totala < totalh)
leadteam = 'h';
if (totala == totalh)
leadteam = ' ';
if (c == 'H')
{
scanf("%d", &hscore);
totalh += hscore;
}
if (c == 'A')
{
scanf("%d", &ascore);
totala += ascore;
}
scanf("%d:%d", &ns, &nb);
if (leadteam == 'a')
alead += (60 * ns + nb) - (60 * ls + lb);
if (leadteam == 'h')
hlead += (60 * ns + nb) - (60 * ls + lb);
ls = ns, lb = nb;
}
if (totalh > totala)
{
printf("H");
hlead += (60 * 32) - (60*ls+lb);
}
else
{
printf("A");
alead += (60 * 32) - (60 * ls + lb);
}
if(hlead%60<10)
printf(" %d:0%d", hlead / 60, hlead % 60);
else
printf(" %d:%d", hlead / 60, hlead % 60);
if (alead % 60 < 10)
printf(" %d:0%d", alead / 60, alead % 60);
else
printf(" %d:%d", alead / 60, alead % 60);
return 0;
}