Names Scores
Using names.txt, a 46K text file containing over five-thousand first names, begin by sorting it into alphabetical order. Then working out the alphabetical value for each name, multiply this value by its alphabetical position in the list to obtain a name score.
For example, when the list is sorted into alphabetical order, COLIN,
which is worth , is the th name in the list.
So, COLIN would obtain a score of .
What is the total of all the name scores in the file?
names.txt에 있는 이름들을
위의 규칙대로 점수를 메겨 모든 이름의 점수를 합한 값을 구하는 문제이다.
내가 생각한 구현방식은 다음과 같다.
names.txt
를 불러와서 list
로 만들어 준 후 sort()
를 활용해 정렬해준다.간단하니 한번에 구현해 보자.
//Python
# 대문자 알파벳 리스트를 위한 import
from string import ascii_uppercase
alphabets = list(ascii_uppercase) # = ['A','B','C'...'Z']
# 쌍따옴표 제거 및 ','를 기준으로 list화 후 정렬
filename = './Day21~30/Day_21/names.txt'
f = open(filename, 'r')
names = f.read().replace('"','')
names = names.split(',')
names.sort()
# 이름의 점수를 구해주는 함수
def score(name):
spell_score = 0
index_score = names.index(name) + 1
for spell in name:
spell_score += (alphabets.index(spell)+1)
return spell_score * index_score
# 반복문을 통해 모든 이름의 점수를 더해준다.
sum_score = 0
for name in names:
sum_score += score(name)
print(sum_score)
>>> 871198282 # correct
오늘은 여기까지
-2025.01.11-