본문 바로가기
Study/Coding Test

[백준] 1339 - 단어 수학 Python

by 들숨날숨흡 2023. 10. 11.
728x90

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

 

1339번: 단어 수학

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

www.acmicpc.net

(1) 딕셔너리 value값 (자릿수, 등장횟수)정렬 - 실패

import sys

input = sys.stdin.readline

N = int(input().rstrip())
alpha = list()
num_alpha = list()
alpha_dict = dict()
sorted_list = list()

for i in range(N):
    M = input().rstrip()
    alpha.append(M)
    for j in range(len(M)):
        A = M[j]
        if A not in alpha_dict:
            alpha_dict[A] = [len(M) - j, 1]
        else:
            alpha_dict[A][0] = max(alpha_dict[A][0], len(M) - j)
            alpha_dict[A][1] += 1

# print(alpha_dict)
alpha_sort = sorted(alpha_dict, key = lambda x : (-alpha_dict[x][0], -alpha_dict[x][1]))

for i in alpha:
    K = ""
    for j in i:
        K += str(9 - alpha_sort.index(j))
    num_alpha.append(int(K))

print(sum(num_alpha))

맞왜틀맞왜틀!!을 열심히 외치다가 찾아낸 반례....

10
ABB
BB
BB
BB
BB
BB
BB
BB
BB
BB

이 예제에 대해 정답은 1790이 나와야 하는데 1780이 나와서 틀린 거였다.. A보다 B에 높은 가중치를 줘야 하는데, A에 높은 가중치를 주면 1780이 나온다. 즉 (A: 8, B:9)여야 하는데 (A:9, B:8)로 나와서 틀린것.. 

 

(2) 정답 코드 

import sys

input = sys.stdin.readline

N = int(input().rstrip())
alpha = list()
num_alpha = list()
alpha_dict = dict()
sorted_list = list()

for i in range(N):
    M = input().rstrip()
    alpha.append(M)
    for j in range(len(M)):
        A = M[j]
        if A not in alpha_dict:
            alpha_dict[A] = (10 ** (len(M) - j - 1))
        else:
            alpha_dict[A] += (10 ** (len(M) - j - 1))

alpha_sort = sorted(alpha_dict, key = lambda x : (-alpha_dict[x]))
# print(alpha_sort)
for i in alpha:
    K = ""
    for j in i:
        K += str(9 - alpha_sort.index(j))
    num_alpha.append(int(K))

# print(alpha_dict)
# print(alpha_sort)
print(sum(num_alpha))

 


https://github.com/sumini0516

 

sumini0516 - Overview

sumini0516 has 6 repositories available. Follow their code on GitHub.

github.com

 

728x90

'Study > Coding Test' 카테고리의 다른 글

[백준] 1764 - 듣보잡 Python  (0) 2023.10.11
[백준] 2563 - 색종이 Python  (0) 2023.10.11
[백준] 11047 - 동전 0 Python  (0) 2023.10.10
[백준] 14502 - 연구소 Python  (0) 2023.10.10
[백준] 2156 - 포도주 시식 Python  (0) 2023.10.10