def solution(n):
return sum(map(int, str(n)))
O(log n)
n이 이미 10^8이므로, O(log n) 이하의 시간복잡도로 풀어야 함!
str(n)
: 입력 정수 n
을 문자열로 변환합니다. 이 변환은 n
의 자릿수에 비례하므로 시간 복잡도는 O(log n)입니다. (자릿수가 늘어날수록 문자열로의 변환에 걸리는 시간이 늘어남)
map(int, str(n))
: 문자열로 변환한 n
을 각 자릿수의 문자로 나누고, 각 문자를 정수로 변환합니다. 이 작업은 문자열의 길이에 비례하며, 시간 복잡도는 O(log n)입니다.
sum(...)
: map
함수의 결과로 얻은 정수들을 모두 합하는 연산입니다. 이 작업은 입력 n
의 자릿수에 비례하므로 시간 복잡도는 O(log n)입니다.