본문 바로가기
알고리즘

백준_15997_승부 예측

by 매화of사군자 2020. 2. 17.

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

 

15997번: 승부 예측

첫 번째 줄에 조별리그를 진행할 국가명 네 개가 공백으로 구분되어 주어진다. 주어지는 모든 국가명은 알파벳 대문자로만 구성된 길이가 1 이상 10 이하인 문자열이다. 두 번째 줄부터 일곱 번째 줄까지는 A B W D L 순으로 주어지는데, 전문가들의 예측에 따르면 A와 B가 경기를 진행했을 때 A가 승리할 확률은 W, 비길 확률은 D, 질 확률은 L이라는 의미이다. A, B는 각각 첫 번째 줄에 있는 국가명 중 하나이고, A와 B가 같은 경우는 주어지지

www.acmicpc.net

해결 방법

> 점수 * 확률을 각 나라의 경기마다 저장한다.

> 위를 토대로 상위 2팀에 들어가는 확률을 출력한다.

 

결과

> 틀렸습니다.

 

틀린 이유

> 모르겠다.

 

코드

더보기

country = input().split()

 

check = dict()

for i in country:

    check[i] = 0

 

for i in range(6):

    a,b,w,d,l = input().split()

    w,d,l = float(w), float(d), float(l)

    check[a] = check[a] + w * 3 + d * 1

    check[b] = check[b] + (1 - (w + d)) * 3 + d * 1

 

check_list = list(check.values())

final = list()

count = 0

for i in check_list:

    final.append([count, i])

    count += 1

final.sort(keylambda x : -x[1])

 

f_list = [0,0,0,0]

flag = max(check_list)

if check_list.count(flag) == 1:

    f_list[final[0][0]] =  1/1

    check_list.remove(flag)

    flag = max(check_list)

    if check_list.count(flag) == 1:

        f_list[final[1][0]] =  1/1

    elif check_list.count(flag) == 2:

        f_list[final[1][0]] =  1/2

        f_list[final[2][0]] =  1/2

    elif check_list.count(flag) == 3:

        f_list[final[1][0]] =  1/3

        f_list[final[2][0]] =  1/3

        f_list[final[3][0]] =  1/3

elif check_list.count(flag) == 2:

    f_list[final[0][0]] =  2/2

    f_list[final[1][0]] =  2/2

elif check_list.count(flag) == 3:

    f_list[final[0][0]] = 2/3

    f_list[final[1][0]] = 2/3

    f_list[final[2][0]] = 2/3

else:

    f_list[final[0][0]] = 2/4

    f_list[final[1][0]] = 2/4

    f_list[final[2][0]] = 2/4

    f_list[final[3][0]] = 2/4

 

for i in f_list:

    print(i)

댓글