관리 메뉴

솜씨좋은장씨

[BaekJoon] 17269번 : 이름궁합 테스트 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 17269번 : 이름궁합 테스트 (Python)

솜씨좋은장씨 2021. 6. 15. 22:11
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 이름궁합 테스트 입니다.

 

17269번: 이름궁합 테스트

시윤이는 좋아하는 이성이 생기면 가장 먼저 이름궁합부터 본다. 이름궁합을 보는 방법은 간단하다. 먼저 이름을 알파벳 대문자로 적는다. 각 알파벳 대문자에는 다음과 같이 알파벳을 적는데

www.acmicpc.net

Solution

def get_compatibility_str(name1, name2, N, M):
    compatibility_str = ""
    temp = ""
    if N <= M:
        temp = name2[N:]
    elif N > M:
        temp = name1[M:]
    
    for i in range(min(N, M)):
        compatibility_str = compatibility_str + name1[i] + name2[i]

    return compatibility_str + temp
        
def get_compatibility_score(compatibility_str, score_dict):
    scores = [alphabet_score[char] for char in list(compatibility_str)]
    
    for i in range(len(scores) - 2):
        scores = [((scores[j] + scores[j+1]) % 10) for j in range(len(scores) - 1)]
    
    compatibility_score = "".join(list(map(str, scores)))
    
    return f"{int(compatibility_score)}%"
            

if __name__ == "__main__":
    alphabet_score = {
        "A":3, "B":2, "C":1, "D":2, "E":4, "F":3, "G":1, "H":3, "I":1, "J":1, 
        "K":3, "L":1, "M":3, "N":2, "O":1, "P":2, "Q":2, "R":2, "S":1, "T":2,
        "U":1, "V":1, "W":1, "X":2, "Y":2, "Z":1
    }
    
    N, M = map(int, input().split())
    name1, name2 = input().split()
    
    compatibility_str = get_compatibility_str(name1, name2, N, M)
    compatibility_score = get_compatibility_score(compatibility_str, alphabet_score)
    
    print(compatibility_score)

Solution 풀이

먼저 이름 궁합 점수를 구하기 위해서는 이름을 한글자 씩 번갈아가면서 붙여 긴 문자열을 만들어주어야 합니다.

이를 get_compatibility_str 함수에서 수행합니다.

입력받은 문자열의 길이를 활용하여 짧은 문자열의 길이만큼 번갈아 가며 문자를 붙인 다음 

긴문자열의 남은 문자열을 뒤에 붙여 return 합니다.

그리고 점수를 get_compatibility_score에서 구합니다.

좀 전에 만든 문자열과 각 문자마다의 점수가 담긴 dictionary를 넣은 다음

문자열 길이 -2 만큼 반복문을 돌면서 2개씩 계속 더한 값을 10으로 나눈 나머지를 계속 남겨둡니다.

맨 마지막에 2개만 남으면 이를 -> 문자 리스트 -> "".join()으로 문자열 만들기 -> int()로 정수만들기 return 합니다.

마지막으로 나온 값을 f-string으로 출력하면 끝!

 

SOMJANG/CODINGTEST_PRACTICE

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

github.com

Comments