흰 스타렉스에서 내가 내리지

[BOJ] (구현) 1339번 단어수학 본문

Problem Solving

[BOJ] (구현) 1339번 단어수학

주씨. 2022. 4. 8. 22:44
728x90

 

Brute force 로 접근하지 말고 수학적으로 풀어서 접근해야 한다.

아래 코드의 맨 아래 주석부분 참고

 

n = int(input())
data = [list(input())[::-1] for _ in range(n)]
dic = dict()
answer = 0

for i in range(len(data)):
    for j in range(len(data[i])):
        if data[i][j] not in dic:
            dic[data[i][j]] = 0
        dic[data[i][j]] += 10**j


arr = sorted(dic.items(), key = lambda x: x[1], reverse=True)
for i in range(len(arr)):
    answer += arr[i][1] * (9-i)

print(answer)

# data
# ['F', 'C', 'G']
# ['B', 'E', 'D', 'C', 'A']

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

https://www.acmicpc.net/problem/1339

 

1339번: 단어 수학

첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대

www.acmicpc.net