게으른카르

백준 2852 NBA 농구 C++

C
2023. 4. 16. 20:08

백준 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

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band