관리 메뉴

솜씨좋은장씨

[BaekJoon] 27522번 : 카트라이더: 드리프트 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 27522번 : 카트라이더: 드리프트 (Python)

솜씨좋은장씨 2023. 3. 10. 21:41
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 카트라이더: 드리프트 입니다.

 

27522번: 카트라이더: 드리프트

레드팀은 2, 4, 5, 6등을 달성하여 총 $20$점을, 블루팀은 1, 3, 7, 8등을 달성하여 총 $19$점을 기록하였다.

www.acmicpc.net

👨🏻‍💻 문제 풀이

입력 받은 값은 "기록(M:SS:SSS) 팀명" 으로 되어있습니다.

공백을 기준으로 split 하여 입력 받은 값을 앞의 값을 기록으로 뒤의 값을 팀명으로 나누었습니다.

기록을 datetime 객체로 바꾸는데에는 datetime 의 strptime 을 활용했습니다.

from datetime import datetime

def get_race_time_and_team_info(record):
    race_time, team_info = record.split()
    
    return datetime.strptime(race_time, "%M:%S:%f"), team_info

위에서 만든 함수를 홀용하여 입력 받은 값들을 기록(M:SS:SSS) / 팀명 으로 나누고 -> 기록을 datetime 객체로 바꿔주고

racing_records = sorted([
    get_race_time_and_team_info(record=record) for record in racing_records
], key=lambda x: x[0])

datetime 객체로 바꾼 값을 기준으로 오름차순 정렬합니다.

score_list = [10, 8, 6, 5, 4, 3, 2, 1, 0]
team_name_dict = {"R": "Red", "B": "Blue"}

for rank, record in enumerate(racing_records):
    score = score_list[rank]

    if record[1] == "R":
        red_team_score += score
    else:
        blue_team_score += score

return "Red" if red_team_score > blue_team_score else "Blue"

datetime 객체로 바꾼 값을 기준으로 정렬하게 되면 1위 ~ 8위 순으로 차례대로 정렬됩니다.

다음 처음부터 기록을 하나씩 꺼내오면서 팀정보를 바탕으로 각 팀의 정보를 계산 한 후

Red 팀의 점수가 더 높으면 Red 를 return

Blue 팀의 점수가 더 높으면 Blue 를 Return 하도록 하였습니다.

👨🏻‍💻 코드 ( Solution )

from datetime import datetime

def get_race_time_and_team_info(record):
    race_time, team_info = record.split()
    
    return datetime.strptime(race_time, "%M:%S:%f"), team_info

def cartrider_drift(racing_records):
    score_list = [10, 8, 6, 5, 4, 3, 2, 1, 0]
    team_name_dict = {"R": "Red", "B": "Blue"}
    
    red_team_score, blue_team_score = 0, 0
    
    racing_records = sorted([
        get_race_time_and_team_info(record=record) for record in racing_records
    ], key=lambda x: x[0])
    

    for rank, record in enumerate(racing_records):
        score = score_list[rank]
        
        if record[1] == "R":
            red_team_score += score
        else:
            blue_team_score += score
        
    return "Red" if red_team_score > blue_team_score else "Blue"
    
    
if __name__ == "__main__":
    racing_records = []
    
    for _ in range(8):
        record = input()
        racing_records.append(record)
        
    print(cartrider_drift(racing_records))
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments