본문 바로가기
✨ 서울대생이 면접 떨어지고 6개월간 삽질하며 정리한 'CS 정리 노트', 지금 무료로 풀립니다!
Problem Solving/Greedy

[그리디] 백준 1339번: 단어 수학

by ggyongi 2021. 5. 26.

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

 

1339번: 단어 수학

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

www.acmicpc.net

import collections
n = int(input())

dct = collections.defaultdict(int)

for i in range(n):
    s = input()
    r = 10**(len(s)-1)
    for j in range(len(s)):
        dct[s[j]] += r
        r /= 10

table = []
for key, val in dct.items():
    table.append(val)

table.sort(reverse=True)

max = 9
answer = 0
for i in range(len(table)):
    answer += table[i]*max
    max-=1
print(int(answer))

처음 보고 읭? 했지만 좀만 생각해보면 쉽게 풀 수 있는 그리디 문제다. 

숫자들이 막 더해지면 자릿수가 올라갈 수도 있고, 또 알파벳은 한번만 등장하는 것도 아니고

이런 생각들을 하다보니 처음에는 감이 안잡혔지만

2 GCF ACDEB를 좀 생각해보면 다음과 같아진다.

10000A + 1010C + 100D + 100G + 10E + B + F

즉 알파벳의 계수를 구한 뒤에 계수 순으로 차례대로 9,8,7,6...을 넣어주면

합이 최대가 될 것이다. 끝!

 

 

 

[지금 무료]컴퓨터 구조: 면접 탈락을 끝낸 궁극의 CS 정리 노트 강의 | 이용준 - 인프런

이용준 | 실무와 면접에서 자주 마주치는 컴퓨터 구조 개념만 선별해, 도해 중심으로 쉽게 설명하고 정리한 핵심 CS(computer-science) 강의입니다. 처음 접하는 사람도 흐름을 잡고, 이후 학습을 빠르

www.inflearn.com

📘 비전공자 개발자 취업 성공기 시리즈

개발자가 되고 싶었던 한 비전공자의 1년 4개월 이야기
막막했던 시작부터 좌절, 그리고 합격까지의 여정을 기록했습니다

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글