Skip to content

Latest commit

 

History

History
62 lines (45 loc) · 2.63 KB

File metadata and controls

62 lines (45 loc) · 2.63 KB

데이트-백준

  • References : https://www.acmicpc.net/problem/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

  • 오민식의 영어 이름과 나머지 여자들의 이름이 주어졌을 때, 오민식과 성공할 확률이 가장 높은 여자의 이름을 출력하는 프로그램을 작성하시오.

  • 여러명일 때에는 알파벳으로 가장 앞서는 이름을 출력하면 된다.

Test Code:

def solution(minsik_name: str, girls_list: list) -> str:
    # You can put your code in here
    return [str]

if __name__ == '__main__':
    minsik_name = 'OHMINSIK'
    girls_list = ['TAEYEON', 'TIFFANY', 'YURI', 'HYOYEON', 'SOOYOUNG', 'SEOHYUN', 'YOONA', 'JESSICA', 'SUNNY']
    sweetheart = solution(minsik_name, girls_list)
    print(sweetheart)

Solution 1: Link

def function(x):
    return -x[0], x[1]


def solution(minsik_name: str, girls_list: list) -> str:
    score_dict = []
    for index, girl_name in enumerate(girls_list):
        L = minsik_name.upper().count('L') + girl_name.upper().count('L')
        O = minsik_name.upper().count('O') + girl_name.upper().count('O')
        V = minsik_name.upper().count('V') + girl_name.upper().count('V')
        E = minsik_name.upper().count('E') + girl_name.upper().count('E')

        score = ((L + O) + (L + V) + (L + E) + (O + V) + (O + E) + (V + E)) % 100
        score_dict.append((score, girl_name))
    score_dict.sort(key=function)
    return score_dict[0][1]


if __name__ == '__main__':
    minsik_name = 'OHMINSIK'
    girls_list = ['TAEYEON', 'TIFFANY', 'YURI', 'HYOYEON', 'SOOYOUNG', 'SEOHYUN', 'YOONA', 'JESSICA', 'SUNNY']
    sweetheart = solution(minsik_name, girls_list)
    print(sweetheart)