관리 메뉴

솜씨좋은장씨

[BaekJoon] 1296번 : 데이트 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 1296번 : 데이트 (Python)

솜씨좋은장씨 2021. 6. 21. 21:08
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 데이트 입니다.

 

1296번: 데이트

첫째 줄에 오민식의 영어 이름이 주어진다. 둘째 줄에는 좋아하는 여자가 몇 명인지 N이 주어지고, 셋째 줄부터 N개의 줄에 여자의 이름이 하나 씩 주어진다. N은 50보다 작거나 같고, 모든 이름은

www.acmicpc.net

Solution

def get_best_try(minsik_name, girl_names):
    scores = []
    for girl_name in girl_names:
        L = girl_name.count("L") + minsik_name.count("L")
        O = girl_name.count("O") + minsik_name.count("O")
        V = girl_name.count("V") + minsik_name.count("V")
        E = girl_name.count("E") + minsik_name.count("E")
        
        score = ((L+O)*(L+V)*(L+E)*(O+V)*(O+E)*(V+E)) % 100
        
        scores.append((score, girl_name))
        
    scores.sort(key=lambda x: (-x[0], x[1]))
    
    return scores[0][1]

if __name__ == "__main__":
    girl_names = []
    minsik_name = input()
    for _ in range(int(input())):
        girl_name = input()
        girl_names.append(girl_name)
        
    print(get_best_try(minsik_name, girl_names))

Solution 풀이

먼저 민식이의 이름을 입력 받고 데이트할 여성의 이름을 입력 받습니다.

그 다음 민식이 이름과 각 여성의 이름에서 "L", "O", "V", "E"의 개수를 구하여

더한 값들을 L, O, V, E 변수에 넣어주고

score = ((L+O)*(L+V)*(L+E)*(O+V)*(O+E)*(V+E)) % 100

위의 값을 구하여 이름과 함께 리스트에 저장해 두었다가

점수를 기준으로 내림차순 이름을 기준으로 오름차순 정렬하고

그 중 가장 앞에 있는 이름을 return하여 출력하면 끝!

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments