[Bronze III] 알파벳 점수 계산기 - 34553

문제 링크

성능 요약

메모리: 110804 KB, 시간: 96 ms

분류

구현, 문자열

제출 일자

2025년 10월 1일 20:46:33

문제 설명

소문자 알파벳 (a-z)으로 이루어진 문자열이 주어집니다. 문자열의 각 문자는 "연속된 오름차순 길이"를 점수로 가집니다.

점수 계산 규칙은 다음과 같습니다:

  • 문자열의 첫 번째 문자는 항상 $1$점입니다.
  • 두 번째 문자부터는 인접한 이전 문자와 비교합니다:
    • 현재 문자가 인접한 이전 문자보다 사전 순서상 뒤에 있다면, 현재 문자의 점수는 인접한 이전 문자의 점수에 $1$을 더한 값입니다.
    • 그 외의 경우, 현재 문자의 점수는 $1$입니다.
  • 문자열의 모든 문자에 대해 구한 점수를 합한 값을 출력해야 합니다.

예를 들어, 문자열 abkcf이 있을 때 계산 과정은 다음과 같습니다.

계산 과정:

  • a: $1$점
  • b: 이전(a)보다 뒤 $\rightarrow 2$점
  • k: 이전(b)보다 뒤 $\rightarrow 3$점
  • c: 이전(k)보다 앞 $\rightarrow 1$점
  • f: 이전(c)보다 뒤 $\rightarrow 2$점

총합 = $1 + 2 + 3 + 1 + 2 = 9$

입력

영소문자로 이루어진 문자열 $S$가 주어집니다. ($1 \le |S| \le 100\,000$)

출력

문자열의 총 점수를 출력해주세요.


💡 해결 방법

💻 코드

# B번 - 알파벳 점수 계산기
 
s = input()
 
pre = s[0]
pres = 1
ans = 1
 
for v in s[1:]:
    if v > pre:
        pres += 1
    else:
        pres = 1
    ans += pres
    pre = v
    
print(ans)