티스토리 뷰

알고리즘/백준

1339번 단어 수학 백준 파이썬

글을 쓰는 개발자 2020. 12. 17. 20:53
반응형

문제:www.acmicpc.net/problem/1339

 

1339번: 단어 수학

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

www.acmicpc.net

필자는 처음에 문제를 접근했을 때 다음과 같이 풀려고 했다.

수의 최대길이가 8이므로 우선 다 8자리를 제공하자.

그래서 빈 곳은 다 -1로 채우자

그리고 자릿수가 제일 큰 애한테 큰 값을 줘야하므로 2중 반복문을 구성하되, 세로로 읽게 하자.

근데 여기서 문제점이 생긴다. 만일 순서대로 읽는데 하필 그 때 D가 2개이고 E가 1개인데 E가 먼저 값을 가지게 되면 오답이 발생하게 된다. 그래서 필자는 결국 중간에 어떻게 해야할 지 몰라서 다른 분의 코드를 보게 되었다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import sys
= int(sys.stdin.readline().rstrip())
words=[sys.stdin.readline().rstrip()  for _ in range(N)]
alphabet=[0]*26
for word in words:
    i=0
    while word: 
        num=ord(word[-1])-ord('A')
        alphabet[num]+=pow(10,i)
        i+=1
        word=word[:-1]
alphabet.sort(reverse=True)
ans=0
idx=0
for i in range(9,-1,-1):
    ans+=alphabet[idx]*i
    idx+=1
print(ans)
 
cs

참고:https://hjp845.tistory.com/129

 

백준 1339 파이썬 python : 단어 수학 @@황소처럼 우직하게@@

각 자리의 중요도를 기록한다 A 가 100의 자리와 1의 자리에 있다면 A 는 101 의 중요도를 갖는것. . 알파벳 총 개수는 26개이다. 외워두자. 모든 알파벳에 대해 중요도를 기록하고 높은거 순서대로 9

hjp845.tistory.com

로직의 흐름은 다음과 같다.

우선 알파벳 배열을 구성한다.

그리고 각 단어가 가지고 있는 알파벳들은 자릿수가 다르다. 

예를 들어 GCF가 있다고 하자

그러면 F는 1의 자리에 대한 크기를 가지고 C는 10의 자리에 대한 크기를 가지고 G는 100의 자리에 대한 크기를 가진다.

이렇게 각 단어들을 조회 함으로써 알파벳들의 가중치를 계산한다. 그리고 이 값들을 내림차순으로 정리한 다음에

9부터 0까지 차례로 곱하면서 더해가면 완성된다.

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함