

다행히 쉬운 풀이였다.
숫자로 만든 이후에 다시 배열로 바꾸었다.
시간복잡도는 이다.
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
temp = 1 # 최종 정수값을 누적할 변수(초기값은 +1 반영)
power = 0 # 현재 자릿수의 10의 거듭제곱 지수
while digits: # digits가 빌 때까지 반복(뒤에서부터 처리)
n = digits.pop() # 가장 낮은 자릿수부터 하나씩 꺼냄
temp += n * (10 ** power) # 해당 자릿수를 정수값으로 환산해 temp에 더함
power += 1 # 다음 자릿수로 이동
return list(map(int, str(temp))) # 계산된 정수를 문자열로 바꾼 뒤 각 자릿수를 다시 리스트로 변환

몫과 나머지를 이용한 풀이다.
비슷한 풀이라고 생각한다.
시간복잡도는 똑같이 이다.
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
carry = 1 # +1 연산에서 시작되는 초기 carry
for i in range(len(digits) - 1, -1, -1):
s = digits[i] + carry # 현재 자릿수에 carry를 더함
digits[i] = s % 10 # 현재 자릿수 값은 10으로 나눈 나머지
carry = s // 10 # 10으로 나눈 몫이 다음 자릿수로 전달될 carry
if carry: # 모든 자릿수 처리 후에도 carry가 남아 있으면
digits = [1] + digits # 가장 앞자리에 1을 추가 (예: 999 -> 1000)
return digits # 최종 자릿수 배열 반환

새해 복 많이 받으세요.