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

2024. 8. 19. 17:50· 카테고리 없음
목차
  1. 문제풀이
  2. 문제코드

 

https://www.acmicpc.net/problem/2852

문제풀이

전체적인 솔루션은 점수가 나는 순간, 이전에 점수 난 시점과의 시간 차이를 계산하며, 그 동안 점수가 높았던 팀에 저장하는 식으로 진행된다. 점수가 같은 경우, 시간 차이는 필요 없으므로 계산하지 않음으로써, 연산 최적화를 수행하였다. 추가적으로 신경 쓴 포인트는 다음과 같다.

  1. 마지막 시간인 48분이 입력으로 들어오지 않으므로, 하드 코딩 해주어야 한다.
    • Iteration을 N+1로 설정해주어, 마지막 Iteration에서 input() 대신 직접 "? 48:00"을 대입한다.
    • Winner를 의미하는 ?는 다음 Iteration에서 활용하는데, 마지막 Iteration이라 활용하지 않는다. 그래서 입력 포맷을 맞춰주기 위해 아무 값이나 넣어주면 된다. 
  2. 뺄셈을 통해, 시간 차이를 구할 때, 초부터 구해준다. 자리내림을 고려한 것이다. 현재의 초가 과거의 초보다 작을 경우, 자리내림이 발생한다.
    1. 자리 내림이 발생했을 경우, 초에 60을 더해준다.
    2. 자리 내림이 발생했을 경우, 분에 1을 빼준다.
  3. 그 동안의 우승자가 중요하므로, 시간을 더해준 뒤 마지막에 현재의 우승자를 반영해준다.
  4. 더해진 시간 차이는 덧셈만 이뤄지므로 모두 더해준 뒤, 마지막에 넘어가는 초를 분으로 변환해주었다.

문제코드

N = int(input())

team1_score, team2_score = 0, 0
team1_minutes, team1_seconds = 0, 0
team2_minutes, team2_seconds = 0, 0
prev_minutes, prev_seconds = 0, 0

for idx in range(N + 1):
    if idx != N:
        winner, time = input().split()
    elif idx == N:
        winner, time = "1 48:00".split()
        
    current_minutes, current_seconds = map(int, time.split(":"))

    if team1_score != team2_score:
        delta_seconds = (current_seconds - prev_seconds) if current_seconds >= prev_seconds else (current_seconds - prev_seconds) + 60
        delta_minutes = (current_minutes - prev_minutes) if current_seconds >= prev_seconds else (current_minutes - prev_minutes) - 1

        if team1_score > team2_score:
            team1_minutes += delta_minutes
            team1_seconds += delta_seconds
        elif team1_score < team2_score:
            team2_minutes += delta_minutes
            team2_seconds += delta_seconds

    prev_seconds = current_seconds
    prev_minutes = current_minutes
    
    if winner == "1":
        team1_score += 1
    elif winner == "2":
        team2_score += 1    

def solution(minutes, seconds):
    total_minutes = minutes + seconds // 60
    remaining_seconds = seconds % 60
    print(f"{total_minutes:02}:{remaining_seconds:02}")

solution(team1_minutes, team1_seconds)
solution(team2_minutes, team2_seconds)

 

저작자표시 (새창열림)
  1. 문제풀이
  2. 문제코드
KauKoala
KauKoala
항공대 알고리즘 동아리 Koala 🥰
Koala항공대 알고리즘 동아리 Koala 🥰
KauKoala
Koala
KauKoala
전체
오늘
어제
  • 분류 전체보기 (1883)
    • 공지 게시판 (10)
    • 정보 게시판 (8)
    • Codeforce (15)
    • acm-icpc (6)
    • Koala - 1기 (16)
    • Koala - 2기 (111)
      • Programming Contest (1)
      • A반 (20)
      • B반 (39)
      • C반 (22)
      • 기초 강의 (18)
    • Koala - 3기 (10)
      • 기초 스터디 (7)
    • Koala - 4기 (67)
    • Koala - 5기 (144)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (68)
    • Koala - 6기 (102)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (25)
      • 모의 테스트 스터디 (1)
    • Koala - 7기 (167)
      • 기초 알고리즘 스터디 (97)
      • 코딩테스트 준비 스터디 (68)
      • 모의 테스트 스터디 (1)
    • Koala - 8기 (44)
      • 기초 알고리즘 스터디 (32)
      • 코딩테스트 준비 스터디 (10)
      • 코드포스 버츄얼 스터디 (0)
      • 프로그래머스 LV2 스터디 (0)
    • Koala - 9기 (205)
      • 기초 알고리즘 스터디 (138)
      • 코딩테스트 준비 스터디 (64)
      • 모의테스트 준비 스터디 (1)
    • Koala - 10기 (117)
      • 기초 알고리즘 스터디 (30)
      • 코딩테스트 준비 스터디 (86)
      • 모의테스트 준비 스터디 (1)
    • Koala - 11기 (151)
      • 기초 알고리즘 스터디 (46)
      • 코딩테스트 준비 스터디 (104)
      • 모의테스트 준비 스터디 (1)
    • Koala - 12기 (86)
      • 기초 알고리즘 스터디 (31)
      • 코딩테스트 준비 스터디 (55)
    • Koala - 13기 (119)
      • 기초 알고리즘 스터디 (52)
      • 코딩테스트 준비 스터디 (67)
    • Koala - 14기 (116)
      • 기초 알고리즘 스터디 (39)
      • 코딩테스트 준비 스터디 (77)
    • Koala - 15기 (138)
      • 기초 알고리즘 스터디 (73)
      • 코딩테스트 준비 스터디 (65)
    • Koala - 16기 (47)
      • 코딩테스트 기초 스터디 (16)
      • 코딩테스트 심화 스터디 (31)
    • Koala - 17기 (62)
      • 코딩테스트 기초 스터디 (15)
      • 코딩테스트 심화 스터디 (47)
    • Koala - 18기 (31)
      • 코딩테스트 기초 스터디 (11)
      • 코딩테스트 심화 스터디 (20)
    • Koala - 19기 (38)
      • 코딩테스트 기초 스터디 (7)
      • 코딩테스트 심화 스터디 (31)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 🐨항공대 알고리즘 학회 Koala 3기 모집
  • 🐨항공대 알고리즘 학회 Koala 2기 모집
  • 소모임 소개

인기 글

태그

  • 백트래킹
  • 백준
  • dp
  • 파이썬
  • dfs
  • C++
  • BFS
  • BOJ

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
KauKoala
[백준/Python] 2852번 : NBA 농구
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.