백준|1339번|단어수학

README·2022년 7월 31일
0

파이썬 PS풀이

목록 보기
34/136

문제설명
문자열들을 입력받고 문자열에 숫자를 대입하여 모두 더했을때 최대가 되는 값을 출력하는 문제입니다.
(알파벳은 최대 10종류가 등장하고 대입할 수 있는 숫자의 범위는 0~9입니다.)

작동 순서
1. 문자열들을 입력받고 등장하는 알파벳들을 배열에 저장하여 기억합니다.
2. 입력받은 각 문자열들을 검사하면서 각 알파벳들의 문자열에서의 위치에 따른 계수를 더해줍니다.
3. 위에서 계산한 알파벳들의 계수를 역순으로 정렬해서 큰 순서로 정렬해줍니다.
4. 계수가 큰 알파벳들부터 큰 숫자들을 대입하여서 Sum에 그 값을 더해줍니다.
5. Sum 값을 추출합니다.

소스코드

from string import ascii_uppercase
N = int(input())
Word = []
AlphabetCount = [0]*10
Alphabet = []
Sum = 0
for i in range(N):
    Word.append(list(input()))
    for Spelling in ascii_uppercase:
        if Word[i].count(Spelling)>0 and Spelling not in Alphabet:
            Alphabet.append(Spelling)
for i in range(N):
    for j in range(0, len(Word[i])):
        for k, Spelling in zip(range(len(Alphabet)), Alphabet):
            AlphabetCount[k] += Word[i][j].count(Spelling)*(10**(len(Word[i])-j-1))
AlphabetCount.sort(reverse=True)
for i in range(10):
    Sum += AlphabetCount[i]*(9-i)
print(Sum)

후기
골드4 문제치고는 꽤나 쉽게 풀었던것 같습니다. 아직은 코딩에 익숙하지 않아서 코드가 길고 지저분하게 나오는데 다른 사람들의 풀이를 보면서 개선해나가야할 것 같습니다.

profile
INTP 개발자 지망생

0개의 댓글