본문 바로가기

Algorithm Problems/구현

[백준/python] 2852번: NBA 농구

문제

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