Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 갓생
- 2156
- nodejs
- X
- Chrome Extension
- supabase
- 캠스터디
- popup
- 프로그래머스 #정수삼각형 #동적계획법
- content script
- 백준 #7568번 #파이썬 #동적계획법
- discord.js
- C언어로 쉽게 풀어쓴 자료구조
- 백준
- 자료구조
- 크롬 익스텐션
- 백준 7579
- react
- 동적계획법
- webpack
- background script
- Message Passing
- 공부시간측정어플
- 크롬 확장자
- TypeScript
- 포도주시식
- 디스코드 봇
- 파이썬
Archives
- Today
- Total
히치키치
[백준] 1339번 : 단어수학 - Python(파이썬) 본문
풀이
- 알파벳과 숫자 매칭 : 딕셔너리
- 숫자와 알파벳의 자릿수 매칭 : 10의 제곱수 pow
- 매칭된 숫자가 큰거 부터 9에서 내림차순으로 곱하기 : for문, (9 - i)
- 최대 값 : 그리디
코드
# 문제 : https://www.acmicpc.net/problem/1339
# import sys; sys.stdin.readline 사용 X
N=int(input())
words=[input() for _ in range(N)]
letter_digits={}
for word in words:
cnt=len(word)-1
for letter in word:
if letter in letter_digits:
letter_digits[letter]+=pow(10,cnt)
else:
letter_digits[letter]=pow(10,cnt)
cnt-=1
digits=sorted(list(letter_digits.values()),reverse=True)
result=0
for i in range(len(digits)):
result+=digits[i]*(9-i)
print(result)
헷갈렸던 점
#(1) sys로 입력 받는 경우 뒤에 공백문자까지 입력됨 -> 출력값 달라짐
#(2) 알파벳에 대응되는 자릿수(10의 제곱수)에서 몇 제곱인지 구하기
for word in words:
cnt=len(word)-1 #for문으로 단어에서 한 글자씩 꺼낼때 맨 앞의 문자부터 나옴 ex.apple 이면 a
for letter in word: #길이 - 1 인 이유 : apple -> a:1000=10^(5-1)
if letter in letter_digits: #단어 안에 여러번 등장하는 문자
letter_digits[letter]+=pow(10,cnt)
else: #단어 안에 한 개 있는 문자
letter_digits[letter]=pow(10,cnt)
cnt-=1 #그 다음 글자로 넘어가는데 그러면 자릿수도 낮아짐
#(3) 높은 자릿수에는 큰 수가 곱해져야 함.
#-> 딕셔너리 키값을 내림차순으로 정렬
#-> for문으로 곱하기 계산 시 9부터 내림차순으로 곱해져야함
digits=sorted(list(letter_digits.values()),reverse=True) #키(자릿수)기준 값 내림차순
result=0
for i in range(len(digits)):
result+=digits[i]*(9-i) #9부터 내림차순 곱
'알고리즘 스터디' 카테고리의 다른 글
[백준] 16234번 : 인구이동 - Python(파이썬) (0) | 2021.03.29 |
---|---|
[백준] 1939번 : 중량제한 - Python(파이썬) (0) | 2021.03.22 |
[백준] 2630번 : 색종이 만들기 - Python(파이썬) (0) | 2021.03.22 |
[백준] 17829번 : 222-풀링 - Python(파이썬) (0) | 2021.03.22 |
[백준] 2293번 : 동전 1 - Python(파이썬) (0) | 2021.03.04 |
Comments