728x90
    
    
  반응형
    
    
    
  *문제 출처는 백준에 있습니다.
문제 제목: 1296번 팀 이름 정하기
문제 사이트: https://www.acmicpc.net/problem/1296

나의 풀이
문제를 이해잘 해야함
from itertools import combinations
from collections import Counter
name = input()
n = int(input())
team_names = [input() for i in range(n)]
team_names.sort()
def probability(name,team_name):
    love_cnt = {'L':0,'O':0,'V':0,'E':0}
    name_count = Counter(name)
    team_name = Counter(team_name)
    for i in love_cnt:
        for j in team_name:
            if i == j:
                love_cnt[i] += team_name[j]
        for k in name_count:
            if i == k:
                love_cnt[i] += name_count[k]
    combination = combinations(love_cnt.keys(),2)
    result = [love_cnt[i[0]] + love_cnt[i[1]] for i in list(combination)] # [('L', 'O'), ('L', 'V'), ('L', 'E'), ('O', 'V'), ('O', 'E'), ('V', 'E')]
    return multiply(result) % 100
def multiply(arr):
    ans = 1
    for i in arr:
        ans *= i
    return ans
max_score = -1 # 나머지가 0일때도 있어서 -1 로 해서 비교
max_team = ''
for t in team_names:
    answer = probability(name,t)
    if answer > max_score:
        max_score = answer
        max_team = t
    elif answer == max_score and t < max_team: # 문자열끼리 비교하면 사전순으로 앞으로됨 
        max_team = t
print(max_team)

※ 알아야 할 것
- 문자열끼리 대소관계 비교하면 사전순으로 비교된다
- 나머지가 0일때도 대소관계 비교해야함
728x90
    
    
  반응형
    
    
    
  'coding test - python > 백준' 카테고리의 다른 글
| 백준 / 1987번 알파벳 / Python 파이썬 (0) | 2025.04.03 | 
|---|---|
| 백준 / 1357번 뒤집힌 덧셈 / Python 파이썬 (0) | 2025.04.03 | 
| 백준 / 1292번 쉽게 푸는 문제 / Python 파이썬 (0) | 2025.04.02 | 
| 백준 / 1268번 임시 반장 정하기 / Python 파이썬 (0) | 2025.04.02 | 
| 백준 / 1236번 성지키기 / Python 파이썬 (0) | 2025.04.02 |