티스토리 뷰

반응형

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

 

1339번: 단어 수학

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

www.acmicpc.net

 


⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 그리디 알고리즘
  • 브루트포스 알고리즘

 


 

⊙ 문제 접근 과정

 

딕셔너리를 사용해줬다. 가장 높은 알파벳 순서대로 9부터 시작해주니 시작 값은 9로 설정 (num 변수)

그리고 딕셔너리에 값이 없으면 10의 제곱승을 추가해준다.

제곱승은 입력받은 길이에 따라 달라지고 for문을 한바퀴 돌 때마다 하나씩 줄어든다.

 

그리고 마지막에 딕셔너리를 큰 값부터 사용하기 위해 역정렬을 해준다.

 

그리고 값들을 result에 넣어 더해주고 출력해주면 된다.

 

 


 

⊙ 문제 풀이

 

import sys

input = sys.stdin.readline

N = int(input())
words = [input().rstrip() for _ in range(N)]

dict = {}

for w in words:
    cnt = len(w)-1
    for ww in w:
        if ww not in dict:
            dict[ww] = pow(10, cnt)
        else:
            dict[ww] += pow(10, cnt)
        cnt -= 1

dict = sorted(dict.values(), reverse=True)

result = 0
num = 9

for v in dict:
    result += v*num
    num -= 1

print(result)

 


⊙ 결과

 


⊙ 마무리

 

 

NONE

 

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

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