티스토리 뷰
문제:www.acmicpc.net/problem/1339
1339번: 단어 수학
첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대
www.acmicpc.net
필자는 처음에 문제를 접근했을 때 다음과 같이 풀려고 했다.
수의 최대길이가 8이므로 우선 다 8자리를 제공하자.
그래서 빈 곳은 다 -1로 채우자
그리고 자릿수가 제일 큰 애한테 큰 값을 줘야하므로 2중 반복문을 구성하되, 세로로 읽게 하자.
근데 여기서 문제점이 생긴다. 만일 순서대로 읽는데 하필 그 때 D가 2개이고 E가 1개인데 E가 먼저 값을 가지게 되면 오답이 발생하게 된다. 그래서 필자는 결국 중간에 어떻게 해야할 지 몰라서 다른 분의 코드를 보게 되었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import sys
N = int(sys.stdin.readline().rstrip())
words=[sys.stdin.readline().rstrip() for _ in range(N)]
alphabet=[0]*26
for word in words:
i=0
while word:
num=ord(word[-1])-ord('A')
alphabet[num]+=pow(10,i)
i+=1
word=word[:-1]
alphabet.sort(reverse=True)
ans=0
idx=0
for i in range(9,-1,-1):
ans+=alphabet[idx]*i
idx+=1
print(ans)
|
cs |
참고:https://hjp845.tistory.com/129
백준 1339 파이썬 python : 단어 수학 @@황소처럼 우직하게@@
각 자리의 중요도를 기록한다 A 가 100의 자리와 1의 자리에 있다면 A 는 101 의 중요도를 갖는것. . 알파벳 총 개수는 26개이다. 외워두자. 모든 알파벳에 대해 중요도를 기록하고 높은거 순서대로 9
hjp845.tistory.com
로직의 흐름은 다음과 같다.
우선 알파벳 배열을 구성한다.
그리고 각 단어가 가지고 있는 알파벳들은 자릿수가 다르다.
예를 들어 GCF가 있다고 하자
그러면 F는 1의 자리에 대한 크기를 가지고 C는 10의 자리에 대한 크기를 가지고 G는 100의 자리에 대한 크기를 가진다.
이렇게 각 단어들을 조회 함으로써 알파벳들의 가중치를 계산한다. 그리고 이 값들을 내림차순으로 정리한 다음에
9부터 0까지 차례로 곱하면서 더해가면 완성된다.
'알고리즘 > 백준' 카테고리의 다른 글
16198번 에너지 모으기 백준 파이썬 (0) | 2020.12.20 |
---|---|
14225번 부분수열의 합 백준 파이썬 (0) | 2020.12.20 |
2250번 트리의 높이와 너비 백준 파이썬 (0) | 2020.12.16 |
1967번 트리의 지름 백준 파이썬 (0) | 2020.12.15 |
1991번 트리 순회 백준 파이썬 (0) | 2020.12.15 |
- Total
- Today
- Yesterday
- Pattern
- dockerignore
- ubuntu
- thread
- PostgreSQL
- Spring
- 자바
- postgres
- BFS
- 그래프
- 프로그래머스
- Collections
- headers
- docker
- docker-compose
- 면접
- Command Line
- 파이썬
- 알고리즘
- Linux
- Celery
- setattr
- 2021 KAKAO BLIND RECRUITMENT
- 카카오
- Java
- django
- DRF
- env
- Python
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |