ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.