조금씩 꾸준하게
[백준] 2852번 - NBA 농구 (Python) 본문
반응형
문제
https://www.acmicpc.net/problem/2852
2852번: NBA 농구
첫째 줄에 골이 들어간 횟수 N(1<=N<=100)이 주어진다. 둘째 줄부터 N개의 줄에 득점 정보가 주어진다. 득점 정보는 득점한 팀의 번호와 득점한 시간으로 이루어져 있다. 팀 번호는 1 또는 2이다. 득
www.acmicpc.net
접근 방법
문제의 요구사항을 그대로 구현하면 되는 문제이다.
분+초를 초단위로 전부 바꿔서 구현하기 편하도록 하였고,
시간의 범위가 크지 않으므로 매초마다 승자를 판단하는 방식으로 단순하게 구현하였다.
코드
def timeToNum(timeStr): # "01:10"과 같은 시간 문자열을 초단위의 정수로 바꾼다. (ex. "00:00" -> 0, "10:00" -> 600)
minute, second = map(int, timeStr.split(":"))
return minute * 60 + second
def numToTime(num): # 반대로 초단위의 정수를 시간 문자열로 바꾼다.
minute = str(num // 60)
second = str(num % 60)
if len(minute) == 1:
minute = "0" + minute
if len(second) == 1:
second = "0" + second
return minute + ":" + second
N = int(input())
scoreDict = {} # 시간을 key값, 득점한 팀 번호를 value로 한다. (득점 시간이 겹치지 않는다 했으므로)
for i in range(N):
teamNo, timeStr = input().split()
scoreDict[timeToNum(timeStr)] = int(teamNo)
teamWinTime1 = 0 # 1번 팀이 이기고 있던 시간
teamWinTime2 = 0 # 2번 팀이 이기고 있던 시간
teamScore1 = 0 # 현재 1번 팀 점수
teamScore2 = 0 # 현재 2번 팀 점수
for i in range(0, timeToNum("48:00")): # 매 초마다 승자를 체크한다.
if i in scoreDict:
if scoreDict[i] == 1:
teamScore1 += 1
else:
teamScore2 += 1
if teamScore1 > teamScore2:
teamWinTime1 += 1
elif teamScore1 < teamScore2:
teamWinTime2 += 1
print(numToTime(teamWinTime1))
print(numToTime(teamWinTime2))
풀이 정보
시도 횟수: 1회
총 문제 풀이에 걸린 시간: 17분 12초
반응형
'ProblemSolving > BOJ' 카테고리의 다른 글
[백준] 9657번 - 돌 게임 3 (Python) (0) | 2023.03.15 |
---|---|
[백준] 1764번 - 듣보잡 (Python) (0) | 2023.03.14 |
[백준] 11060번 - 점프 점프 (Python) (0) | 2023.03.12 |
[백준] 18242번 - 네모네모 시력검사 (Python) (1) | 2023.03.11 |
[백준] 9184번 - 신나는 함수 실행 (Python) (0) | 2023.03.10 |
Comments