이 문제에서 주의해야 할 점은 player1이 이기다가.. 다시 비기게 되는 순간에 player1이 이기는 시간이 멈추어져야 하고, player2가 다시 선방(?)하게 될 때 또 player2의 이기는 순간이 시작되어야 한다.
그래서 이 때 관점을 우리가 하나씩 입력받는 순간마다 바뀌도록 했는데, 그 방법은 예를 들어 player 1 -> 1 -> 2 -> 2 -> 2 ->라고 하면 player가 이길 때는 +1로 양수로 한 칸 가고 2가 이길 때는 -1로 간다. 즉, 0이 되는 순간이 비기는 거고 양수는 player1이 이기는 거, 음수는 player2가 이기는 거다. (1, 2, 1, 0, -1 이 됨) 그렇게 하면 비기는 순간/player2가 이기는 순간이 헷갈리지 않게 잘 나타나졌다!!
그리고 이기고 있던 시간은 그냥 어차피 경기가 48분이 기준이고, 나중에 어찌 되었든 이기든/지든/비기고 있든 승패는 결정이 나게 되므로 애초에 시간 계산을 경기가 끝나는 그 시간 기준으로 해서 player1이 이기고 있다가 비기게 되면 (48*60-이기기 시작한 시간) - (49*60-비기기 시작한 시간) 이런 식으로 해서 짰다. 어차피 그게 (비기기 시작한 시간- 이기기 시작한시간)이라서 상관이 없다
n=int(input())
one_time=0 #1번팀이 이기는 시간
two_time=0
flag=0
for i in range(n):
team, time=input().split()
m,s=map(int, time.split(':'))
if team=='1':
if flag==0: #이제 이기려고 함
one_time+=48*60-(60*m+s)
flag+=1
if flag==0:
if two_time>0:
two_time=two_time-(48*60-(60*m+s))
else:
if flag==0: #이제 이기려고 함
two_time+=48*60-(60*m+s)
flag-=1
if flag==0: #이걸 넣으면 비겨.
if one_time>0:
one_time=one_time-(48*60-(60*m+s))
print('{:0>2}:{:0>2}'.format(one_time//60,one_time%60))
print('{:0>2}:{:0>2}'.format(two_time//60,two_time%60))
#끝났을 때 무승부로 끝남
'Koala - 5기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python] 15813번 너의 이름은 몇 점이니? (0) | 2022.01.30 |
---|---|
<3주차> [BOJ / C++] 1874번 - 스택 수열 (0) | 2022.01.29 |
[백준|python] 1966번 프린터 큐 (0) | 2022.01.26 |
[BOJ/python] 1157번 단어 공부 (0) | 2022.01.25 |
[백준 / python] 5218번 - 알파벳 거리 (0) | 2022.01.25 |