본문 바로가기

코딩테스트/Baekjoon

(Python 3) 백준 알고리즘 1296 데이트

문제 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

예제 출력 1

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()
= 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리스트를 오름차순으로 정렬한 후 맨 앞에 값을 출력한다.


알고리즘 분류

  • 문자열 처리
  • 탐색



반응형