데이터사이언스 기록기📚

[백준/Python] 9017번(구현)_ 크로스 컨트리 본문

Coding Test/백준(Python)

[백준/Python] 9017번(구현)_ 크로스 컨트리

syunze 2023. 4. 13. 22:15

📌문제 유형

구현(실버4)

 

📌문제

 

9017번: 크로스 컨트리

입력 데이터는 표준입력을 사용한다. 입력은 T 개의 테스트 케이스로 주어진다. 입력 파일의 첫 번째 줄에 테스트 케이스의 수를 나타내는 정수 T 가 주어진다. 두 번째 줄부터는 두 줄에 하나의

www.acmicpc.net

 

📌나의 문제풀이

- 거의 맞은거 같은데, 어디서 틀렸는지 감이 안잡힌다....

t = int(input())

for _ in range(t):
    n = int(input())
    li_ = list(map(int,input().split()))

    # 팀 개수 확인
    teams = max(li_)

    # 팀 개수만큼 리스트 생성 -> 팀 명수 확인
    # 6명 이하 제외 -> team_except에 팀 넣기
    team_except = []
    team_members = [0] * (teams + 1)
    for k in range(1, teams+1):
        team_members[k] = li_.count(k)
        if li_.count(k) < 6:
            team_except.append(k)

    new_li = [0] # 남아있는 팀
    for i in range(len(li_)):
        if li_[i] not in team_except:
            new_li.append(li_[i])
    
    # 팀 점수 합산하기
    team_score = [[0,0,0,i] for i in range(teams + 1)] # [점수, cnt, 5번째 점수, 팀 번호]
    for j in range(1, len(new_li)):
        if team_score[new_li[j]][1] < 4:
            team_score[new_li[j]][1] += 1
            team_score[new_li[j]][0] += j
        elif team_score[new_li[j]][1] == 4:
            team_score[new_li[j]][1] += 1
            team_score[new_li[j]][2] = j

    cnt = 0
    while cnt <= len(team_score) + 1:
        cnt += 1
        team = team_score.pop(0)
    
        if team[0] == 0:
            continue
        else:
            team_score.append(team)
        
    team_score.sort(key = lambda x : (x[0], x[2]))
    print(team_score[0][3])

 

📌 다른사람의 문제풀이

 

[백준 🥈4] 9017번 크로스 컨트리 (Python/파이썬)

https://www.acmicpc.net/problem/9017참가자 수가 6명 보다 작은 팀은 반드시 점수 계산에서 제외해줘야 제대로 된 결과가 나온다이 조건 무시해서 처음에 테케부터 틀렸음메모리 제한이 작아서 걱정했지

velog.io

 

📌 리뷰

- 다시보기...

728x90
Comments