문제
https://www.acmicpc.net/problem/2852
2852번: NBA 농구
첫째 줄에 골이 들어간 횟수 N(1<=N<=100)이 주어진다. 둘째 줄부터 N개의 줄에 득점 정보가 주어진다. 득점 정보는 득점한 팀의 번호와 득점한 시간으로 이루어져 있다. 팀 번호는 1 또는 2이다. 득
www.acmicpc.net
문제 요약
골이 들어간 횟수와 득점 정보를 받아 1번 팀이 이기고 있던 시간과, 2번 팀이 이기고 있던 시간을 출력한다.
득점 정보에는 득점한 팀 번호와 득점 시간으로 이루어져 있다.
경기는 정확히 48분동안 진행된다.
코드
import sys
input = __import__('sys').stdin.readline
def main():
N = int(input())
m1, s1 = 0, 0 # 1팀이 이기고 있던 시간
m2, s2 = 0, 0 # 2팀이 이기고 있던 시간
sc1, sc2 = 0, 0 # 1팀 2팀 점수
arr = []
for _ in range(N):
team, tm = input().rstrip().split()
team = int(team) # 골을 넣은 팀
m, s = map(int, tm.split(':')) # 골이 들어간 시간
arr.append([team, m, s])
now_m, now_s = 0 , 0 # 현재 분, 초
while True:
if now_m == 48:
break
for i, data in enumerate(arr): # 현재 시간이 골이 들어간 시간인지 체크
if now_m == data[1] and now_s == data[2]:
if data[0] == 1:
sc1 += 1
else:
sc2 += 1
arr.pop(i) # 체크된 골 기록은 arr에서 삭제
break
if sc1 > sc2:
s1 += 1
elif sc2 > sc1:
s2 += 1
now_s += 1 # 현재 시간을 1초씩 증가
if now_s == 60:
now_m += 1
now_s = 0
m1 = s1 // 60
s1 %= 60
m2 = s2 // 60
s2 %= 60
print(f'{m1:02}:{s1:02}') # 포맷팅을 이용하여 2자리로 표현
print(f'{m2:02}:{s2:02}')
if __name__ == "__main__":
main()
코드 설명
1. 골이 들어간 횟수만큼 반복하여 득점 정보를 리스트 arr에 저장한다. (2차원 리스트)
2. 무한 루프를 사용하여 현재 시간을 1초씩 증가시키며 반복한다. 현재 시간이 48분이면 반복문을 종료한다.
3. 시간마다 골이 들어간 시간인지 arr리스트 안 데이터를 확인한다. 골이 들어간 시간이면 골 넣은 팀 점수를 1점 증가시킨다.
4. 시간마다 현재 점수가 높은 팀의 이기고 있는 시간을 1초 증가시킨다.
5. 60초가 되면 분 변수를 1 증가시키고 초 변수는 0으로 초기화한다.
(0:60 => 1:00)
6. 반복문이 종료되면 이기고 있던 시간이 초 단위로만 저장되어 있으므로 분 단위로 변경해준다.
7. 출력은 포맷팅을 이용하여 2자리수로 시간을 표현한다.
'Algorithm Problems > 구현' 카테고리의 다른 글
[백준/Python] 17300번: 패턴 (1) | 2024.01.06 |
---|---|
[백준/Python] 23349번: 졸업 사진 (0) | 2024.01.01 |
[백준/Python] 1969번: DNA (1) | 2023.11.20 |
[백준/Python] 1408번: 24 (2) | 2023.10.10 |
[백준/python] 2999번: 비밀 이메일 (2) | 2023.07.24 |