본문 바로가기
백준 문제풀이

[백준][문자열] 2852 NBA 농구 c++구현

by 꽁이꽁설꽁돌 2024. 4. 30.
728x90
반응형

목차

    https://www.acmicpc.net/problem/2852

    문제

     

    문제 풀이 시 알아두면 좋은점

    	// a[i-1]을 임시로 prev를 통해 이런식으로 저장한다. a[i]와의 비교를 편리하게 한다.
        for (int i = 0; i < T; i++) {
    		cin >> time;
    		prev = time;  //그 전 시간을 저장해 놓는 변수 prev
    	}

     

    시간 환산

    //02:23을 분으로 환산해서 리턴 => 143
    int min(string str) {  //시간을 분으로 바꾸어서 리턴
    	int min = atoi(str.substr(0, 2).c_str())*60 + atoi(str.substr(3, 5).c_str());
    	return min;
    }

     

     

    코드 구현

    #include <iostream>
    #include<map>
    #include<queue>
    #include<algorithm>
    #include<string>
    using namespace std;
    
    
    
    
    int time1 = 0, time2 = 0; //각 누적 시간
    string timeStand(int min) {  //시간을 형식에 맞추어 바꾸어줌
    	string time="";
    	int hour = min / 60;
    	int minute = min % 60;
    	if (hour < 10)  //10보다 작으면 0을 붙여준다.
    		time += "0";
    	time += to_string(hour) +":";
    	if (minute < 10)  //10보다 작으면 0을 붙여준다.
    		time += "0";
    	time += to_string(minute);
    	return time;
    }
    
    int min(string str) {  //시간을 분으로 바꾸어서 리턴
    	int min = atoi(str.substr(0, 2).c_str())*60 + atoi(str.substr(3, 5).c_str());
    	return min;
    }
    
    void ing(string now, string prev, int n) {  
    	if(n==1)
    	    time1 += min(now) - min(prev);  //차이만큼 누적 해준다.
    	else
    		time2 += min(now) - min(prev);  //차이만큼 누적 해준다
    }
    
    int main() {
    	int T, team, t1 = 0, t2 = 0; 
    	string time, t1_time, t2_time, prev="00:00";
    
    	cin >> T;
    
    	for (int i = 0; i < T; i++) {
    		cin >> team >> time;
    		if (t1 > t2)  // 이기고 있을 경우에 그 전 값과의 차이를 누적
    			ing(time, prev, 1);
    		else if(t1 < t2)
    			ing(time, prev, 2);
    		if (team == 1)
    			t1++;
    		else
    			t2++;
    		prev = time;  //그 전 시간을 저장해 놓는 변수 prev
    	}
    	if (t1 > t2)   //경기 시간과의 차이만큼 마지막으로 누적
    		ing("48:00", time, 1);
    	else if (t1 < t2)
    		ing("48:00", time, 2);
    
    	cout << timeStand(time1) << "\n";
    	cout << timeStand(time2);
    
    	
    }
    반응형