728x90
반응형
  • 문제

동혁이는 NBA 농구 경기를 즐겨 본다. 동혁이는 골이 들어갈 때 마다 골이 들어간 시간과 팀을 적는 이상한 취미를 가지고 있다.

농구 경기는 정확히 48분동안 진행된다. 각 팀이 몇 분동안 이기고 있었는지 출력하는 프로그램을 작성하시오.

  • 입력

첫째 줄에 골이 들어간 횟수 N(1<=N<=100)이 주어진다. 둘째 줄부터 N개의 줄에 득점 정보가 주어진다. 득점 정보는 득점한 팀의 번호와 득점한 시간으로 이루어져 있다. 팀 번호는 1 또는 2이다. 득점한 시간은 MM:SS(분:초) 형식이며, 분과 초가 한자리 일 경우 첫째자리가 0이다. 분은 0보다 크거나 같고, 47보다 작거나 같으며, 초는 0보다 크거나 같고, 59보다 작거나 같다. 득점 시간이 겹치는 경우는 없다.

  • 출력

첫째 줄에 1번 팀이 이기고 있던 시간, 둘째 줄에 2번 팀이 이기고 있던 시간을 출력한다. 시간은 입력과 같은 형식(MM:SS)으로 출력한다.

  • 예제 입력
1
1 20:00
3
1 01:10
2 21:10
2 31:30
5
1 01:10
1 02:20
2 45:30
2 46:40
2 47:50
  • 예제 출력
28:00
00:00
20:00
16:30
45:30
00:10
  • 접근방식

prev를 사용해 이전값을 알기, 시와 분 또는 분과 초가 나오면 하나의 단위로 통일후, 단위 나누기

문자열로 입력받아서 ":" 을 기준으로 앞과 뒤를 나누어 저장

  • 코드
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int n, o, A, B, asum, bsum;

string s , _prev;

string print(int a) // 앞에 00을 붙이고 뒤에서 2개를 자름, 7이면 007 -> 두개를 자르니깐 07이 됨
{
	string d = "00" + to_string(a / 60);
	string e = "00" + to_string(a % 60);
	return d.substr(d.size() - 2, 2) + ":" + e.substr(e.size() - 2, 2);
}

int changetoint(string a) // 입력받은 문자열 ??:?? 를 int형으로 바꾸기 단위는 초 
{
	return atoi(a.substr(0, 2).c_str()) * 60 + atoi(a.substr(3, 2).c_str());
}

void sumint(int& sum, string s) // int로 바꾸어 합치기
{
	sum += (changetoint(s) - changetoint(_prev));
}

int main() 
{
	cin >> n;

	for (int i = 0; i < n; i++)
	{
		cin >> o >> s;
		if (A > B)
			sumint(asum, s);
		else if (B > A)
			sumint(bsum, s);
		o == 1 ? A++ : B++; // o가 1이면 A팀이 이기고 있음 아니면(2면) B팀이 이기고 있음
		_prev = s;
	}

	if (A > B)
		sumint(asum, "48:00"); // 끝 점 처리를 하기
	else if (B > A)
		sumint(bsum, "48:00");

	cout << print(asum) << "\n";
	cout << print(bsum) << "\n";

	return 0;
}
 

2852번: NBA 농구

첫째 줄에 골이 들어간 횟수 N(1<=N<=100)이 주어진다. 둘째 줄부터 N개의 줄에 득점 정보가 주어진다. 득점 정보는 득점한 팀의 번호와 득점한 시간으로 이루어져 있다. 팀 번호는 1 또는 2이다. 득

www.acmicpc.net

 

728x90
반응형

'C++ > BOJ' 카테고리의 다른 글

[C++]/백준 9012번 괄호  (0) 2023.01.19
[C++]/백준 1436 영화감독 숌  (0) 2023.01.19
[C++]/백준 3474번 교수가 된 현우  (0) 2023.01.19
[C++]/백준 10709번 기상캐스터  (0) 2023.01.19
[C++]/백준 2870번 수학숙제  (0) 2023.01.17

+ Recent posts