-
BaekJoon[1339]코딩/백준 그리디 문제 2023. 2. 17. 12:23
이문제는 간단하게 들어온 알파벳의 위치에따라 10을 곱해줘서 우선순위를 리스트에저장하고
ABB#A가 3째자리에있으니 10**(3-1)=100의 우선순위를부여 B는 두번째 첫번쨰자리에있으니 10**(2-1)+10**(1-1)=11
CS#마찬가지로 C=10**(2-1),S=10**(1-1)
EX) ['A':100,'B':11,'C':10,'S':1]#정렬
이값에 FOR문을 리버스로 돌려서 9부터 1까지 삽입후 처음에 들어왔던 값들에 매치 시켜주면 끝
alphabet=[input() for i in range(int(input()))] alphabet_value={} priority=[] a=11 for i in alphabet: for j in range(len(i)): if alphabet_value.get(i[j])==None: alphabet_value[i[j]]=0 alphabet_value[i[j]]+=10**(len(i)-j+1) alphabet_value=sorted(alphabet_value.items(),key=lambda x:-x[1]) n=9 encode={} for i in alphabet_value: encode[i[0]]=str(n) n-=1 result=0 for i in range(len(alphabet)): char='' for j in range(len(alphabet[i])): char+=encode[alphabet[i][j]] result+=int(char) print(result,end='')
'코딩 > 백준 그리디 문제' 카테고리의 다른 글
BaekJoon[4796] (0) 2023.02.17 BaekJoon[2437] (0) 2023.02.17 BaekJoon[1449] (0) 2023.02.17 BaekJoon[1789] (0) 2023.02.17 BaekJoon[16953] (0) 2023.02.17