정수가 각 자리별 원소로 나뉜 리스트 형태로 제공될 때(123 → [1,2,3]) 해당 수에서 1을 더한 리스트(123 → [1,2,4]) 를 리턴해보자.
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
i=len(digits)-1
while i>-1:
if digits[i]==9:
digits[i]=0
i-=1
else:
digits[i]+=1
break
if digits[0]==0:
digits.insert(0,1)
return digits
첫 풀이는 1의 자리 숫자부터 9인지 아닌지를 판별하여 1을 더해주는 방식이다. 새로운 변수의 할당이 필요하지 않다.
두 번째 풀이는 형변환을 사용하였다.
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
strint=str(int(''.join(map(str,digits)))+1)
digits=list(map(int,list(strint)))
return digits
리스트를 합친 정수에 +1을 더한 임시 문자열을 만들고, 해당 문자열을 다시 정수 문자열로 나누는 방법이다.
첫 번째 풀이는 O(리스트 길이) 이므로 O(100)이다.
두 번째 풀이에 대한 시간복잡도는 형변환에서 동일한 시간이 걸린다. 하지만 시간은 두번째 풀이가 훨씬 빠르게 나왔다.