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);
}
반응형
'백준 문제풀이' 카테고리의 다른 글
[백준][bfs] 14502 연구소 c++ 구현 (0) | 2024.05.01 |
---|---|
[백준][브루트 포스] 1436번 영화감독 숌 c++구현 (0) | 2024.04.30 |
[백준][문자열] 4659 비밀번호 발음하기 c++구현 (0) | 2024.04.13 |
[정렬][맵][백준] 2910 빈도 정렬 c++ 구현 (0) | 2024.04.12 |
[백준][dfs] 2583 영역 구하기 c++ 구현 (0) | 2024.04.04 |