2018. 3. 16. 14:46, 알고리즘/BOJ
https://www.acmicpc.net/problem/1036
각 digit(0~9, A~Z)에 대해 전체 합을 생각해볼 때 그 digit에 곱해지는 값이 얼마인지를 미리 계산해둡니다. 예를 들어
2
AB2
211
일 경우, A에는 36**2, B에는 36, 2에는 36**2+1, 1에는 37이 곱해집니다.(코드 상에서 val[i])
그리고 i = 0~35에 대해 val[i]*(35-i)가 큰 순으로 K개를 택해, 그것들을 Z로 변경하면 됩니다.
long long 범위를 아득하게 넘어서기 때문에 python으로 코딩했습니다.
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 11049번: 행렬 곱셈 순서 (0) | 2018.03.20 |
---|---|
[BOJ] 1509번: 팰린드롬 분할 (0) | 2018.03.20 |
[BOJ] 5557번: 1학년 (0) | 2018.03.20 |
[BOJ] 2531번: 회전 초밥 (0) | 2018.03.15 |
[BOJ] 2436번: 공약수 (0) | 2018.03.15 |
[BOJ] 14502번: 연구소 (0) | 2018.03.13 |
Comments