[백준] 2852 NBA 농구 - 완전 탐색, 구현

jckim22·2023년 7월 8일
0

[ALGORITHM] STUDY (PS)

목록 보기
20/86

문제

문제 바로가기

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

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

입력

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

출력

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

예제 입력

5
1 01:10
1 02:20
2 45:30
2 46:40
2 47:50

예제 출력

45:30
00:10

문제 검토

경기를 진행한다고 생각하고 매초마다 반복할 수 있게 한다.
그래봤자 48x60 번이다.

완전 탐색을 떠올려야 한다.

풀이(python)

Python

n = int(input())
t = [list(input().split()) for _ in range(n) ]

asco=0
bsco=0
idx=0
acnt=0
bcnt=0
for x in range(48):
    for y in range(60):
        if x<10:    
            m='0'+str(x)
        else:
            m=str(x)

        if y<10:
            s='0'+str(y)
        else:
            s=str(y)
            
        try:
            if t[idx][1]==f'{m}:{s}' and idx<n:        
                if t[idx][0] == '1':
                    asco+=1
                else:
                    bsco+=1                    
                idx+=1
        except:
            pass
        if asco>bsco:
            acnt+=1
            
        elif asco==bsco:
            continue
        else:
            bcnt+=1
        

am=str(acnt//60)
asc=str(acnt%60)

bm=str(bcnt//60)
bsc=str(bcnt%60)
            
if acnt//48<10:
    am='0'+am
if acnt%60<10:
    asc='0'+asc
if bcnt//48<10:
    bm='0'+bm
if bcnt%60<10:
    bsc='0'+bsc
    
print(f'{am}:{asc}')
print(f'{bm}:{bsc}')
    
    

입력 받은 시간에 도달하면 1골 넣어주고 누가 이기고 있는지 비기고 있는지 확인하여 정답 시간에 계속 체크한다.

걸린 시간

17분 15초

총평

문자열 처리 때문에 코드가 조금 길어졌지만, 문제 난이도는 쉬운 편이었다.
인덱스를 초과하는 에러가 떠서 다른 방법으로 수정할 수 있었지만, try-except 문으로 예외처리를 하여 풀었다.

profile
개발/보안

0개의 댓글