[백준/파이썬] 1296번 팀 이름 정하기 풀이

업데이트:



문제 정보


풀이

문제

내 이름과 후보 팀 이름들이 주어질 때, LOVE 글자 개수를 이용한 공식 점수가 가장 큰 팀 이름을 고르는 문제입니다.

동점이면 사전순으로 가장 앞선 이름을 선택합니다.

코드

my=input()
n=int(input())
girls=[[[0,0,0,0],input()] for _ in range(n)]

l=o=v=e=0
for c in my:
    if c=='L': l+=1
    elif c=='O': o+=1
    elif c=='V': v+=1
    elif c=='E': e+=1

def calc(my,girl):
    l,o,v,e=my[0]+girl[0],my[1]+girl[1],my[2]+girl[2],my[3]+girl[3]
    return ((l+o)*(l+v)*(l+e)*(o+v)*(o+e)*(v+e))%100

for girl in girls:
    for c in girl[1]:
        if c=='L': girl[0][0]+=1
        elif c=='O': girl[0][1]+=1
        elif c=='V': girl[0][2]+=1
        elif c=='E': girl[0][3]+=1
    girl[0]=-calc((l,o,v,e),girl[0])

girls.sort()
print(girls[0][1])

설명

내 이름에서 L/O/V/E 개수를 먼저 세고, 후보마다 같은 개수를 세어 점수를 계산합니다.

정렬을 한 번에 처리하려고 점수를 음수로 바꿔 저장한 뒤, (점수, 이름) 기준으로 정렬해 첫 원소를 출력합니다.



댓글남기기