Search

Plus One

문제 설명 : 숫자형 리스트로 제공된 integer 값을 +1 하여 다시 숫자형 리스트로 변경
풀이 방법
가장 마지막 숫자가 9가 아닌 경우에는, 간단하게 마지막 숫자만 1 더하고 반환 처리한다.
9가 존재하는 경우에는, 연속된 9를 모두 0으로 바꾸고 9가 존재하지 않는 자리수를 1 올려준다.
만약 모든 자리수가 9라면, 가장 높은 자리수를 1로 처리하고, 나머지 모든 자리수를 0으로 변경한다.
시간 복잡도
O(N)O(N)
성공 코드
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
복사