728x90

https://www.acmicpc.net/problem/1296
1296번: 팀 이름 정하기
연두는 프로그래밍 대회에 나갈 팀 이름을 정하려고 한다. 미신을 믿는 연두는 이환이에게 공식을 하나 받아왔고, 이 공식을 이용해 우승할 확률이 가장 높은 팀 이름을 찾으려고 한다. 이환
www.acmicpc.net
문제
연두는 프로그래밍 대회에 나갈 팀 이름을 정하려고 한다. 미신을 믿는 연두는 이환이에게 공식을 하나 받아왔고, 이 공식을 이용해 우승할 확률이 가장 높은 팀 이름을 찾으려고 한다.
이환이가 만든 공식은 사용하려면 먼저 다음 4가지 변수의 값을 계산해야 한다.
- L = 연두의 이름과 팀 이름에서 등장하는 L의 개수
- O = 연두의 이름과 팀 이름에서 등장하는 O의 개수
- V = 연두의 이름과 팀 이름에서 등장하는 V의 개수
- E = 연두의 이름과 팀 이름에서 등장하는 E의 개수
그 다음, 위에서 구한 변수를 다음 식에 입력하면 팀 이름의 우승할 확률을 구할 수 있다.
((L+O) × (L+V) × (L+E) × (O+V) × (O+E) × (V+E)) mod 100
연두의 영어 이름과 팀 이름 후보 N개가 주어졌을 때, 우승할 확률이 가장 높은 팀 이름을 구해보자. 확률이 가장 높은 팀이 여러가지인 경우 사전 순으로 가장 앞서는 팀 이름이 우승할 확률이 가장 높은 것이다.
입력
첫째 줄에 연두의 영어 이름이 주어진다. 둘째 줄에는 팀 이름 후보의 개수 N이 주어진다. 셋째 줄부터 N개의 줄에 팀 이름이 한 줄에 하나씩 주어진다.
연두의 영어 이름과 팀 이름은 길이는 1보다 크거나 같고, 20보다 작거나 같으며, 알파벳 대문자로만 이루어져 있다. N은 50보다 작거나 같은 자연수이다.
출력
첫째 줄에 우승할 확률이 가장 높은 팀 이름을 출력한다.
예시

코드
ms = input()
n = int(input())
li = sorted([input() for i in range(n)])
p = i = 0
for ie in range(n):
L = ms.count("L") + li[ie].count("L")
O = ms.count("O") + li[ie].count("O")
V = ms.count("V") + li[ie].count("V")
E = ms.count("E") + li[ie].count("E")
a = ((L + O) * (L + V) * (L + E) * (O + V) * (O + E) * (V + E)) % 100
if p < a:
p = a
i = ie
print(li[i])
코드 해석
- 연두의 이름을 받는다.
- 팀 이름 목록의 수를 받고 팀 이름들을 list로 정리한다.
- for 문으로 각 단의 우승 확률을 구한다.
- p에 우슬 확률을 넣고 i에 리스트 인덱스 값을 넣는다.
- 선정된 이름을 출력한다.

728x90
'코딩테스트 > Beakjoon' 카테고리의 다른 글
| 백준 1330번 : 두 수 비교하기 [Python] (0) | 2024.01.16 |
|---|---|
| 백준 1316번 : 그룹 단어 체커 [Python] (0) | 2024.01.16 |
| 백준 1264번 : 모음의 개수 [Python] (0) | 2023.11.18 |
| 백준 1259번 : 팰린드롬수 [Python] (0) | 2023.11.18 |
| 백준 1212번 : 8진수 2진수 [Python] (0) | 2023.11.18 |