본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Bronze 3][Python] 8932번 : 7종 경기

by 빛밤하늘 2021. 5. 19.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

8932번: 7종 경기

민혁이는 한국에서 열리는 7종 경기 대회에 참가한다. 7종 경기는 육상의 필드 경기와 트랙 경기 7 종목으로 이루어져 있다. (100미터 허들, 높이뛰기, 포환던지기, 200미터 달리기, 멀리뛰기, 창던

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin

# 트랙 경기와 필드 경기에서의 점수를 낼 때
# 각 종목마다의 A, B, C 상수들을 리스트 변수로 선언합니다.
A = [9.23076, 1.84523, 56.0211, 4.99087, 0.188807, 15.9803, 0.11193]
B = [26.7, 75, 1.5, 42.5, 210, 3.8, 254]
C = [1.835, 1.348, 1.05, 1.81, 1.41, 1.04, 1.88]

# 첫째 줄에 테스트 케이스의 개수 T를 입력합니다.
# 정수형으로 변환합니다.
T = int(stdin.readline())

# 테스트 케이스의 개수 T만큼 반복합니다.
for _ in range(T):
    # 종목별 기록인 일곱 개의 정수를 공백으로 구분해 입력합니다.
    # 각각 정수형으로 변환합니다.
    records = list(map(int, stdin.readline().split(' ')))
    # 총점을 저장할 변수를 선언합니다.
    total_score = 0

    # 각 종목에서 트랙인 경기와 필드인 경기의 인덱스들을 저장하는 변수를 선언합니다.
    track_index = [0, 3, 6]
    field_index = [1, 2, 4, 5]

    # 종목의 개수인 7만큼 반복합니다.
    for records_idx in range(8):
        # 현재 종목이 트랙 경기라면
        if records_idx in track_index:
            # 트랙 경기의 공식에 맞게 계산하는 변수를 선언합니다.
            # 소수 부분은 떼어줍니다.
            score = int(A[records_idx] * ((B[records_idx] - records[records_idx]) ** C[records_idx]))
            # 계산한 점수를 총점에 더해줍니다.
            total_score += score
        # 현재 종목이 필드 경기라면
        elif records_idx in field_index:
            # 필드 경기의 공식에 맞게 계산하는 변수를 선언합니다.
            # 소수 부분은 떼어줍니다.
            score = int(A[records_idx] * ((records[records_idx] - B[records_idx]) ** C[records_idx]))
            total_score += score

    # 총점을 출력합니다.
    print(total_score)

결과

 

첫 번째로 제출했을 때는 A 상수에서 0.188807을 0.188805로 오타를 내어 틀렸습니다 결과가 나왔습니다.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글