티스토리 뷰
https://www.acmicpc.net/problem/1339
ABC, BACDE가 있다면 B가 제일 높은숫자, 그다음 A, C 순으로 큰 자릿수에 있는 알파벳 순으로 높은 숫자를 매겨줘야 제일 큰 합을 얻어낼 수 있습니다. 이를 위해 1의자리에 있는 알파벳 (C, E) 에 1을 더해주고, 10의자리에 있는 알파벳(B, D)에는 10을 더해주고 마지막에 정렬을 해줘서 제일 숫자가 높은 알파벳에 우선순위를 정할 수 있도록 하였습니다.
# https://www.acmicpc.net/problem/1339
# 단어 수학.py
dic = dict()
answer_dic = dict()
board = []
for i in range(26):
dic[chr(ord('A')+i)] = 0
# 알파벳에 자릿수 더해주기
N = int(input())
for i in range(N):
x = input()[::-1]
board.append(x)
for j in range(len(x)):
dic[x[j]] += 1 * (10 ** j)
# 할당된 숫자를 기준으로 알파벳 정렬 후 9부터 1까지 숫자 할당
res = sorted(dic.items(), key=lambda x : x[1],reverse=True)
start_n = 9
for i in res:
if i[1] == 0:
break
answer_dic[i[0]] = start_n
start_n -= 1
# 계산 해주기
answer = 0
for s in board:
for i, v in enumerate(s):
answer += answer_dic[v] * (10 ** i)
print(answer)
'ALGORITHM > BOJ' 카테고리의 다른 글
백준 1259 팰린드롬수.py (0) | 2021.12.05 |
---|---|
[백준] 문자열 폭발 (0) | 2021.11.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- leetcode
- 백준
- 소프트웨어 장인
- stdout
- 팰린드롬수
- 방금그곡
- gunicorn
- Two Scoops of Django
- go context
- django
- ManyToMany
- for-else
- 독후감
- 프로그래머스
- dfs
- conTeXt
- 의대 신경학 강의
- query
- go
- taggit
- 문자열 뒤집기
- sql lite
- 파이썬
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함