배열은 하나의 숫자를 의미한다. 해당 수에 1을 더하는 문제다.
- 배열의 수를 하나씩 꺼내 문자열에 저장한다.
- 해당 문자열을 숫자로 바꿔 1을 증가시킨다.
- 배열에 한 자리 씩 다시 담는다.
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
s = ""
for num in digits: s += str(num)
s = str(int(s) + 1)
ans = []
for i in s: ans.append(int(i))
return ans
전체적으로 코드의 시간 복잡도는 O(n)이다.
내 코드는 너무... C같다.
오랫동안 C패밀리에게 절여져서 파이썬의 장점을 십분 못 살리는 나의 코드.
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
s = ''.join(str(i) for i in digits)
n = int(s)+1
ans = list(map(int, str(n)))
return ans
'구분자'.join(리스트)
: 리스트의 요소를 합쳐서 사이에 구분자를 넣고 하나의 문자열로 바꾸어준다.컴프리헨션
: for문을 저렇게 안에서 바로 쓸 수 있다는 게 도무지 익숙해지지가 않는다...[x for x in range(1, 10+1) if x % 2 == 0] # [2, 4, 6, 8, 10]
if문도 쓸 수 있고 중첩도 가능하다.map()
: 리스트의 요소를 지정한 함수로 처리해준다.훨씬 깔끔하고 파이썬 코드 같다. 컴프리헨션 컴프리헨션 컴프리헨션