Mini

백준 2582 //시간문제는 초단위로 통일하라, string to int(stoi), %02d(0채우기,2칸) 본문

Algorithm/boj

백준 2582 //시간문제는 초단위로 통일하라, string to int(stoi), %02d(0채우기,2칸)

Mini_96 2023. 5. 17. 14:18

2852번: NBA 농구 (acmicpc.net)

 

2852번: NBA 농구

첫째 줄에 골이 들어간 횟수 N(1<=N<=100)이 주어진다. 둘째 줄부터 N개의 줄에 득점 정보가 주어진다. 득점 정보는 득점한 팀의 번호와 득점한 시간으로 이루어져 있다. 팀 번호는 1 또는 2이다. 득

www.acmicpc.net

1.전부 초단위로 변경

배열인덱스 == 초 로 사용

2. a,b 배열에 점수 채워넣기(문자열 파싱, stoi)

3. f에 해당초에 누가이기는지 넣기

4. 총합하여 각각 이기는 시간 구하기.(형식지정자 %02d)

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
int n, t, m, ret1,ret2,a[48 * 60], b[48 * 60], f[48 * 60], bw[48 * 60];
char c;
string s, t1, t2;

int main() {
    //ios_base::sync_with_stdio(0);
    //cin.tie(NULL); cout.tie(NULL);
    cin >> n;
    while (n--)
    {
        cin >> t >> s;
        t1 = s.substr(0, 2);
        t2 = s.substr(3, 5);
        int start = stoi(t1) * 60 + stoi(t2);
        for (int i = start; i < 48 * 60; ++i)
        {
            if (t == 1) a[i]++;
            else b[i]++;
        }       
    }

    for (int i = 0; i < 48 * 60; ++i)
    {
        if (a[i] > b[i]) f[i] = 1;
        else if (a[i] < b[i]) f[i] = 2;
    }
    for (int i = 0; i < 48 * 60; ++i)
    {
        if (f[i] == 1) ret1 += 1;
        else if (f[i] == 2) ret2 += 1;
    }
    printf("%02d:%02d\n", ret1 / 60, ret1 % 60);
    printf("%02d:%02d\n", ret2 / 60, ret2 % 60);
    //cout << ret1 / 60 << ":" << ret1 % 60 << "\n";
    //cout << ret2 / 60 << ":" << ret2 % 60 << "\n";

    return 0;
}