[BOJ] 1296. 팀 이름 정하기
https://www.acmicpc.net/problem/1296
문제
연두는 프로그래밍 대회에 나갈 팀 이름을 정하려고 한다. 미신을 믿는 연두는 이환이에게 공식을 하나 받아왔고, 이 공식을 이용해 우승할 확률이 가장 높은 팀 이름을 찾으려고 한다.
이환이가 만든 공식은 사용하려면 먼저 다음 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보다 작거나 같은 자연수이다.
출력
첫째 줄에 우승할 확률이 가장 높은 팀 이름을 출력한다.
예제 입력 1
LOVE
3
JACOB
FRANK
DANO
예제 출력 1
FRANK
예제 입력 2
JANE
4
THOMAS
MICHAEL
INDY
LIU
예제 출력 2
JANE
4
THOMAS
MICHAEL
INDY
LIU
코드
👩💻 풀이과정
- 연두의 영어 이름과 팀 이름에 LOVE의 철자가 몇개씩 들어있는지 파악해서 식을 연산해야 함
- 연두의 영어 이름과 팀 이름에 각각 L, O, V, E가 몇개씩 들어있는지 배열에 저장
- 0 인덱스부터 3 인덱스까지 순차적으로 연산 방식을 도입해 연산
- 결과값을 100으로 나눈 나머지를 구해서 최댓값이 나온 팀 이름 출력
👀 주의할점
- 특정 문자 개수
- 해당 문자를 ““으로 replace
- replace 하기 전 문자열 길이에서 replace 한 후 문자열 길이를 빼주면 개수 나옴
- 최댓값인 팀이 여러 팀일 때
- 팀 이름들을 배열에 넣고 정렬하여 첫 번째 팀명 출력