[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)