백준 2852 NBA 농구 C++
- C
- 2023. 4. 16.
백준 2852 NBA 농구.
백준 2852번 "NBA 농구" 문제의 자세한 내용은 글 하단의 문제 링크를 참고하세요.
2852번 문제에 주어지는 입력 및 예시
입력:
1
1 20:00
출력:
28:00
00:00
코드
백준 2852번 "NBA 농구" 문제의 코드입니다.
#include <bits/stdc++.h>
using namespace std;
int n,t1,t2,A,B,previ;
int split(string a){
//sec단위.
int time=0,pos=a.find(":");
time=stoi(a.substr(0,pos))*60;
a.erase(0,pos+1);
time+=stoi(a);
return time;
}
int main()
{
ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
string a;
cin >>n;
for(int i=0;i<n; i++){
int team,tmp;
cin>>team>>a;
tmp=split(a);
if(A>B) t1+=tmp-previ;
else if(A<B) t2+=tmp-previ;
team==1?A++:B++;
previ=tmp;
}
if(A>B) t1+=(48*60)-previ;
else if(A<B) t2+=(48*60)-previ;
cout << setfill('0') << setw(2) << t1/60 << ":" << setw(2) << t1 % 60 << "\n";
cout << setfill('0') << setw(2) << t2/60 << ":" << setw(2) << t2 % 60 << "\n";
return 0;
}
코드2.
#include <bits/stdc++.h>
using namespace std;
int n,t1,t2,A,B,previ;
int split(string a){
//sec단위.
int time=0,pos=a.find(":");
time=stoi(a.substr(0,pos))*60;
a.erase(0,pos+1);
time+=stoi(a);
return time;
}
void Tprint(int t){
string min=to_string(t/60);
string sec=to_string(t%60);
if(min.size()<2) min="0"+min;
if(sec.size()<2) sec="0"+sec;
cout<<min<<":"<<sec<<"\n";
return;
}
int main()
{
ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
string a;
cin >>n;
for(int i=0;i<n; i++){
int team,tmp;
cin>>team>>a;
tmp=split(a);
//이기고 있는 시간 계산.
if(A>B) t1+=tmp-previ;
else if(A<B) t2+=tmp-previ;
//골
if(team==1) A++;
else B++;
previ=tmp;
}
if(A>B) t1+=(48*60)-previ;
else if(A<B) t2+=(48*60)-previ;
Tprint(t1);
Tprint(t2);
return 0;
}
실행
위의 코드를 예제의 입력을 넣어 실행했을 때의 결과입니다.
'C' 카테고리의 다른 글
백준 1436 영화감독 숌 C++ (0) | 2023.04.16 |
---|---|
백준 15829 Hashing C++ (0) | 2023.04.16 |
백준 2870 수학숙제 C++ (0) | 2023.04.14 |
백준 10709 기상캐스터 C++ (0) | 2023.04.14 |
백준 3474 교수가 된 현우 C++ (0) | 2023.04.14 |