[백준] 1339번 - 단어 수학

yerimstar·2021년 11월 10일
1

그리디

목록 보기
8/10

아이디어

  1. 각 알파벳의 자릿수를 계산한다.
    ex) AAA => A의 자릿수값은 111
  2. 자릿수값을 기준으로 내림차순 정렬한다.
  3. 자릿수값이 큰 순서대로 9부터 0까지 숫자를 부여해준다.
  4. 알파벳별로 매칭된 숫자값을 기준으로 단어를 숫자로 변환해준다.
  5. 변환된 숫자를 더해서 최종 값을 구한다.

코드

# 단어 수학
N = int(input())
num = list(range(10))
words = []
tmp = {}
new = {}

for _ in range(N):
    words.append(input())

for word in words: # 각 알파벳의 자릿수를 계산한다.
    for i in range(len(word)):
        if word[i] in tmp:
            tmp[word[i]] += (10**(len(word)-i-1))
        else:
            tmp[word[i]] = (10**(len(word)-i-1))

tmp = sorted(tmp.items(), key = lambda x : x[1], reverse= True) # 자릿수값 기준으로 내림차순 정렬

num = 9
for i in range(len(tmp)): # 자릿수값이 큰 순서대로 숫자를 부여해준다. 
    new[tmp[i][0]] = num
    num -= 1

result = 0
for word in words: # 알파벳을 숫자로 변환
    tmpresult = ""
    for w in word:
        tmpresult += str(new[w])
    result += int(tmpresult)
print(result)
profile
백엔드 개발자

2개의 댓글

comment-user-thumbnail
2021년 11월 11일

깰꼼하네요

1개의 답글