문제 1296 데이트
문제
오민식은 자기가 좋아하는 여자 N명 중에 한 명과 함께 데이트하러 나가고 싶어한다.
하지만 N명 모두를 사랑하는 오민식에게는 한 명을 선택하고 나머지 여자를 버리는 것은 슬픈 결정이기 때문에 누구를 선택해야 할지 고민에 빠졌다.
마침 오민식은 사랑계산기를 얻었다. 사랑계산기는 두 사람의 이름을 이용해서 두 사람이 성공할 확률을 계산해 준다. 사랑계산기는 다음과 같이 작동한다.
- 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은 50보다 작거나 같고, 모든 이름을 알파벳 대문자로만 구성되어 있고 모두 길어야 20글자이다.
출력
오민식이 선택한 여자의 이름을 출력한다.
예제 입력 1
OHMINSIK 9 YOONA TIFFANY YURI HYOYEON SOOYOUNG SEOHYUN TAEYEON JESSICA SUNNY | cs |
HYOYEON | cs |
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | def cnt_alpha(name): LOVE = [0]*4 for alpha in name: if alpha == 'L': LOVE[0] += 1 elif alpha == 'O': LOVE[1] += 1 elif alpha == 'V': LOVE[2] += 1 elif alpha == 'E': LOVE[3] += 1 return LOVE def percentage(love): result = ((love[0]+love[1])*(love[0]+love[2])*(love[0]+love[3])*(love[1]+love[2])*(love[1]+love[3])*(love[2]+love[3]))%100 res.append(result) return res m_name = input() N = int(input()) res = [] name_list = [] answer = [] for i in range(N): w_name = input() name_list.append(w_name) percentage(cnt_alpha(m_name+w_name)) max_p = max(res) for j in range(N): if res[j] == max_p: answer.append(name_list[j]) answer.sort() print(answer[0]) | cs |
1. 각 이름에서 'L','O','V','E'의 개수를 구하는 함수를 따로 만들어 남자와 여자의 이름을 '+'기호를 활용해 하나로 묶어 개수를 찾아낸다.
2. 사랑계산기를 통해 사랑의 확률을 계산한다.
3. max함수를 사용해 가장 큰 확률을 찾고 이에 맞는 이름을 answer리스트에 넣는다.
4. answer리스트를 오름차순으로 정렬한 후 맨 앞에 값을 출력한다.
- 문자열 처리
- 탐색
'코딩테스트 > Baekjoon' 카테고리의 다른 글
(Python 3) 백준 알고리즘 2231 분해합 (0) | 2020.11.23 |
---|---|
(Python 3) 백준 알고리즘 10769 행복한지 슬픈지 (0) | 2020.02.21 |
(Python 3) 백준 알고리즘 15953 상금 헌터 (0) | 2019.10.31 |
(Python 3) 백준 알고리즘 10773 제로 (0) | 2019.07.18 |
(Python 3) 백준 알고리즘 10828 스택 (1) | 2019.07.18 |