진우의 비밀번호
난이도
Gold 5
인증
문제
건망증이 심한 진우는 자기가 가입한 웹사이트의 비밀번호를 자주 까먹는다. 이를 대비해 진우는 비밀번호를 오로지 영어 소문자만을 이용하여 생성한다. 진우는 비밀번호를 까먹을 때마다 비밀번호의 가능성이 있는 문자열들을 사전 순으로 시도하여 맞는 비밀번호를 찾아낸다. 비밀번호의 가능성이 있는 문자열이란, 영어 소문자로만 구성되어 있고 길이가 1 이상 N 이하인 문자열을 말한다. (N은 진우가 가입한 웹사이트에서 허용되는 최대 비밀번호 길이이다.) 이런 방식을 쓰기 때문에, 진우가 비밀번호를 까먹었을 때 비밀번호를 맞힐 때까지 얼마나 시간이 걸릴지 아는 것이 매우 중요하다. 진우는 타자 속도가 매우 느리기 때문에 하나의 비밀번호를 시도하는데 1초가 소요된다.
진우는 또다시 비밀번호를 까먹어버렸다. 진우가 비밀번호를 맞힐 때까지 몇 초가 걸릴지 계산해보자.
입력
입력의 첫 번째 줄에 비밀번호의 최대 길이인 N(1 ≤ N ≤ 10)이 주어지며 두 번째 줄에 진우의 비밀번호가 주어진다.
진우의 비밀번호는 영어 소문자로만 구성되어 있으며 길이는 1 이상 N 이하이다.
출력
비밀번호의 가능성이 있는 문자열들을 사전 순으로 시도할 때, 진우가 비밀번호를 맞힐 때까지 걸리는 시간(초)을 출력하면 된다.
예제 입력
3
ba
예제 출력
705
해설 및 후기
풀이가 매우 간단하다. 당연하게도 일일히 더하여 비밀번호를 찾으려면 너무 오랜 시간이 걸린다. 때문에 비밀번호를 순회하며 각 자리에 대해 해당 알파벳을 가지려면 건너뛰어야 하는 문자열의 개수를 구해 모두 더한다.
제출 코드
n = int(input())
pw = input()
res = 0
for i in range(len(pw)):
a = pw[i]
tmp = 0
for j in range(n-i):
tmp += 26**j
res += tmp*(ord(a)-ord('a')) + 1
print(res)