Coding Test/문제 풀이

[문제 풀이] 백준 1339

EUNJI HA 2022. 3. 22. 20:44

해결 과정

10의 자리 숫자 별로 계산해서, dictionary를 만들었다. 

{'F': 1, 'C': 1010, 'G': 100, 'B': 1, 'E': 10, 'D': 100, 'A': 10000}

이를 정렬하고, 9부터 내림차순으로 곱해주고 결과값을 구하면 된다.

 

나의 풀이

from collections import defaultdict

def solution():
    N = int(input())
    words = [input() for _ in range(N)]
    dictionary = defaultdict(int) # {'A' : 100, 'B' : 1010, ... }
    
    # dictionary 만들기
    for word in words:
        for idx, value in enumerate(reversed(word)):
            dictionary[value] += 10 ** idx

    # dictionary 정렬 후, 9부터 차례대로 부여하고, 정답 계산
    num = 9
    answer = 0
    for item in sorted(dictionary.items(), key = lambda x: x[1], reverse=True):
        answer += item[1] * num
        num -= 1

    return answer

print(solution())

 

다른 풀이