•
문제 링크 : LeetCodePlus One - LeetCode
•
문제 설명 : 숫자형 리스트로 제공된 integer 값을 +1 하여 다시 숫자형 리스트로 변경
•
풀이 방법
◦
가장 마지막 숫자가 9가 아닌 경우에는, 간단하게 마지막 숫자만 1 더하고 반환 처리한다.
◦
9가 존재하는 경우에는, 연속된 9를 모두 0으로 바꾸고 9가 존재하지 않는 자리수를 1 올려준다.
◦
만약 모든 자리수가 9라면, 가장 높은 자리수를 1로 처리하고, 나머지 모든 자리수를 0으로 변경한다.
•
시간 복잡도
◦
•
성공 코드
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
cursor = len(digits) - 1
# 가장 마지막 숫자가 9가 아닌 경우는 1만 추가 후 바로 종료
if digits[cursor] != 9:
digits[cursor] += 1
return digits
# 가장 마지막 숫자가 9라면, 9가 이어지지 않을 때까지 연산 처리
while digits[cursor] == 9 and cursor >= 0:
digits[cursor] = 0
cursor -= 1
# 모든 숫자가 9일 경우
# EX) 9, 99, 999 ...
if digits[0] == 0:
digits = [1] + digits
# 연속된 9가 종료된 위치의 자리 수를 1 증가한다.
else:
digits[cursor] += 1
return digits
Python
복사