기록하고 까먹지 말기

1339 본문

전공/백준

1339

yha97 2022. 10. 23. 13:48

날짜 : 2022. 10. 23

사용 언어 : python

 

문제

 

 

코드

import sys

n = int(sys.stdin.readline())
spel = {} # 알파벳별 자리 저장
word = [] # 입력받은 단어
num = []
res = 0

for _ in range(n): # 단어 입력
    word.append(sys.stdin.readline().strip())

for i in word:
    for j in range(0, len(i)):
        if i[j] not in spel: # 스펠링이 없었던 경우
            spel[i[j]] = 10 ** (len(i) - 1 - j)
        else: # 기존 스펠링이 있는 경우
            spel[i[j]] += 10 ** (len(i) - 1 - j)

temp = list(spel.values())
temp.sort(reverse=True)

for i in range(len(temp)):
    res += temp[i] * (9 - i)
print(res)
#print(spel)
#print(temp)

 

 

알게된 점

- 그리디 실버 문제는 무난하게 풀어서 객기로 도전한 골드였지만 상당히 어려웠다.

- 알파벳으로 슬라이싱 후 내림차순으로 9부터 숫자를 부여해서 풀이하는 방식은 얼추 맞았지만 반례에서 바로 틀렸다.

- 한시간정도 고민하다가 결구 구글링을 했고 알파벳 딕셔너리에서 찾으면 value를 1로 설정하는 것이 아니라 자릿수별로 설정해야 풀이 가능하다는 것을 알게 되었다. ex) AABCA 의 경우 A : 11001, B : 100, C : 10..

- 그래서 코드를 처음부터 다시 짰고 맞힐 수 있었다.

- 단어별로 숫자를 부여해서 더하는 방식을 생각했지만 알파벳 별로 숫자를 부여해서 풀이하는 것이 훨씬 효율적이었다.

 

참고 사이트

- https://yoonsang-it.tistory.com/41

 

백준 1339번 파이썬 풀이: 단어 수학

백준 1339번 단어 수학 알고리즘 분류: 그리디 알고리즘, 백트래킹 링크: www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가

yoonsang-it.tistory.com

 

'전공 > 백준' 카테고리의 다른 글

2178  (0) 2022.10.25
10610  (0) 2022.10.25
1789  (0) 2022.10.23
1003  (0) 2022.10.21
1463  (0) 2022.10.21