2852 - NBA농구

재찬·2023년 1월 28일
0

Algorithm

목록 보기
29/64

문제

코드

#include <bits/stdc++.h>
using namespace std;
#define prev pre
int A,B,asum,bsum,n,w;
string t, prev;

int stringToInt(string a){
	return atoi(a.substr(0,2).c_str()) * 60 + atoi(a.substr(3,2).c_str());
}

void update(int &sum, string time){
	sum += (stringToInt(time) - stringToInt(prev)); 
}

string print(int a){
	string mm = "00" + to_string(a / 60);
	string ss = "00" + to_string(a % 60);
	return mm.substr(mm.size() - 2, 2) + ":" + ss.substr(ss.size()-2,2);
}

int main(){
	cin >> n;
	for(int i = 0; i <n; i++){
		cin >> w >> t;
		if(A>B) update(asum, t);
		else if(B>A) update (bsum, t);
		w == 1 ? A++ : B++;
		prev = t;
	}
	
	if(A>B) update(asum, "48:00");
	else if(B>A) update(bsum, "48:00");
	cout << print(asum) << '\n';
	cout << print(bsum) << '\n';
}

풀이



결과

후기

굉장히 오랜 시간 막혀서 도움을 받은 문제다.
문자열을 하나씩 int형으로 바꾸려고 했던 문제,
"한 팀이 이긴다"의 상황을 코드로 잘못 표현한 문제로 굉장히 애를 먹었다.
시간을 계산할 때는 단위를 통일하는게 코드 적기 편하고,
string과 int의 계산을 할 때 무조건은 아니지만 계산이 이렇게 필요한 경우 함수로 따로 만드는 것이 많이 편리하다는 점을 느꼈다.
자꾸 어떤 연속적인 값을 배열이나 vector등 자료구조에 넣으려고만 하는 습관이 있는듯하다. 그런 부분을 입력과 동시에 처리할 수 있는지도 생각해봐야겠다.

0개의 댓글