문제
n의 각 자리 숫자를 왼쪽에서부터 1번으로 번호를 매깁니다. 각 자리 숫자를 해당 위치의 거듭제곱으로 올리고, 그 결과를 모두 더하세요. 예를 들어 352의 경우 3¹ + 5² + 2³ 입니다. 0인 자리 숫자는 0을 더합니다.
digit_power_sum(n)을 구현하세요.
입력
n: 양의 정수
출력
거듭제곱된 자리수의 합을 반환하세요.
제약 조건
1 ≤ n ≤ 1,000,000,000
예시
예시 1
입력:
n = 352
예상 출력:
expected = 36
입력:
long long n = 352;
예상 출력:
long long expected = 36;
입력:
long n = 352;
예상 출력:
long expected = 36;
설명
3¹ + 5² + 2³ = 3 + 25 + 8 = 36.
예시 2
입력:
n = 89
예상 출력:
expected = 89
입력:
long long n = 89;
예상 출력:
long long expected = 89;
입력:
long n = 89;
예상 출력:
long expected = 89;
설명
8¹ + 9² = 8 + 81 = 89, 즉 자기 자신입니다.
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
숫자를 왼쪽에서 오른쪽으로 한 자리씩 훑으면서 각 자리의 위치를 추적하세요.
힌트 2
숫자를 문자열로 바꾸거나, 각 자리를 결합하기 전에 왼쪽부터의 인덱스를 알 수 있어야 합니다.
힌트 3
0인 자리는 값은 없지만, 지수 계산에서는 위치가 여전히 중요합니다.
예상 복잡도
시간 O(d), 추가 공간 O(1)