링크 : https://www.acmicpc.net/problem/2852
2852번: NBA 농구
첫째 줄에 골이 들어간 횟수 N(1<=N<=100)이 주어진다. 둘째 줄부터 N개의 줄에 득점 정보가 주어진다. 득점 정보는 득점한 팀의 번호와 득점한 시간으로 이루어져 있다. 팀 번호는 1 또는 2이다. 득
www.acmicpc.net
- 문제
- 소요시간 : 30분(실패)



- 설계하기(접근방법)
1. 입력받기
총 골을 넣은 횟수를 n으로 입력받는다
그 다음 for문을 통해서 정보들을 입력받는다
팀번호는 팀번호로, 분과 초는 :를 기준으로 입력받는다
2. 구현하기
누가 이기고 있는지 체크하는 체커가 필요하다
또한 이전 골의 시간과 현재 골의 시간을 비교해야 하기 때문에
이전 골의 시간 값을 저장할 변수가 필요하다
처음 입력 받을 때 까지는 서로 비긴 상태다
먼저 처음 입력받은 후
점수와, 시간을 저장해놓는다
그 다음 순회 때
입력받은 시간 - 이전 시간을 하고
현재 이기고 있는 팀을 판별하여
시간을 더해준 후
그 다음 입력받은 팀의 번호에 점수를 더해준다
3. 출력하기
00:00 형태이므로
형태에 맞게 포맷을 사용하여 출력한다
- 코드(출력)
n = int(input())
time_std = 0
team_1_win_time = 0
team_2_win_time = 0
team_1_score = 0
team_2_score = 0
winning_team = 0
for i in range(n + 1):
if i < n:
team_num, time = input().split()
team_num = int(team_num)
time_min, time_sec = int(time[0:2]), int(time[3:5])
total_sec = 60 * time_min + time_sec
team_win_time = total_sec - time_std
time_std = total_sec
elif i == n:
team_win_time = (48 * 60) - time_std
if winning_team == 1:
team_1_win_time += team_win_time
elif winning_team == 2:
team_2_win_time += team_win_time
else:
pass
if team_num == 1:
team_1_score += 1
else:
team_2_score += 1
if team_1_score > team_2_score:
winning_team = 1
elif team_2_score > team_1_score:
winning_team = 2
else:
winning_team = 0
team_1_min, team_1_sec = team_1_win_time // 60 ,team_1_win_time % 60
team_2_min, team_2_sec = team_2_win_time // 60 , team_2_win_time % 60
team1_total = print(f'{team_1_min:02d}:{team_1_sec:02d}')
team2_total = print(f'{team_2_min:02d}:{team_2_sec:02d}')
- 얻어갈 부분
1. 구현 순서를 잘못하고 요구 사항을 잘못 파악해서 실패했다
2. 포맷 함수에 대해서 다시 공부하자.
'알고리즘(백준) > 구현' 카테고리의 다른 글
| [알고리즘/구현] 1138번 : 한 줄로 서기 - python (0) | 2023.12.29 |
|---|---|
| [알고리즘/구현] 20006번 : 랭킹전 대기열 - python (1) | 2023.12.29 |
| [알고리즘/구현] 10709번 : 기상캐스터 - python (1) | 2023.12.28 |
| [알고리즘/구현] 1205번 : 등수 구하기 - python (0) | 2023.12.28 |
| [알고리즘/구현] 9017번 : 크로스 컨트리 - python (0) | 2023.12.27 |