![[백준] 2852 NBA 농구 C++](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2d84A%2FbtsMI6UmiAd%2Fusep3HAmd9thcd0qUHNTKk%2Fimg.png)
[백준] 2852 NBA 농구 C++알고리즘/백준2025. 3. 14. 11:38
https://www.acmicpc.net/problem/2852
풀이
농구 골 넣는 문제이다.
포인트는 '분 -> 초'로 단위로 단위 통일 인듯하다.
분끼리 계산 & 초끼리 계산하면 복잡하기 때문에 단위를 통일해주고
이긴 시간을 누적해주어야 하기 때문에 prev라는 변수를 통해 이전에 골을 넣은 시간을 추적해준다.
그리고 분 & 초를 초단위로 변경 및 출력하기 위해 substr를 사용해주도록 하자.
1. 초로 단위 통일
2. 이긴 팀 변수 증가
3. 골을 넣은 시간(prev)로 추적
4. 이긴 팀의 시간을 계산하여 누적
5. substr로 출력
코드
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
using ll = long long;
#define prev ppp1
#define visit ppp2
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n; cin >> n;
int prev = -1, team = 0, A = 0, B = 0, asum = 0, bsum = 0;
string str;
for (int i = 0; i < n; ++i)
{
cin >> team >> str;
int sec = stoi(str.substr(0, 2)) * 60 + stoi(str.substr(3));
if (i > 0)
{
if (A > B) asum += sec - prev;
else if (B > A) bsum += sec - prev;
}
team == 1 ? A++ : B++;
prev = sec;
}
if (A > B) asum += (47 * 60 + 60) - prev;
else if (B > A) bsum += (47 * 60 + 60) - prev;
string astr1 = "00" + to_string(asum / 60);
string astr2 = "00" + to_string(asum % 60);
string bstr1 = "00" + to_string(bsum / 60);
string bstr2 = "00" + to_string(bsum % 60);
cout << astr1.substr(astr1.size() - 2) << ":" << astr2.substr(astr2.size() - 2) << endl;
cout << bstr1.substr(bstr1.size() - 2) << ":" << bstr2.substr(bstr2.size() - 2) << endl;
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 3474 교수가 된 현우 C++ (0) | 2025.03.13 |
---|---|
[백준] 16953 A->B C++ (0) | 2025.01.12 |
[백준] 블로그2 C++ (0) | 2025.01.05 |
[백준] 14916 거스름돈 C++ (1) | 2025.01.02 |
[백준] 줄세우기 2631 C++ (0) | 2024.12.31 |
@CGNY :: 김놀자
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!