문제 개요
정수 배열 A가 있다고 가정해 보겠습니다. 배열 A는 n개의 음수가 아닌 원소를 담고 있으며, 배열 전체가 하나의 큰 숫자를 나타냅니다. 예를 들어 A = [5, 3, 2, 4]가 주어지면 이는 숫자 5324를 의미합니다.
우리가 해야 할 일은 배열 A가 나타내는 숫자에 1을 더한 뒤, 그 결과를 다시 배열 형태로 반환하는 것입니다. 따라서 위의 예에서 1을 더하면 A는 [5, 3, 2, 5]가 됩니다.
해결 접근 방법
이 문제는 다음과 같은 단계로 해결할 수 있습니다.
- 배열의 각 자릿수를 문자열에 차례대로 이어 붙여 하나의 문자열로 만듭니다.
- 문자열을 정수로 변환한 후 1을 더합니다.
- 결과 숫자를 다시 각 자릿수로 분리하여 새로운 배열을 만듭니다.
아래 구현 예제를 통해 더 자세히 이해해 보겠습니다.
예제 코드 (Python)
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
num = ""
for i in digits:
num += str(i)
num = int(num)
num += 1
num = str(num)
ans = []
for i in num:
ans.append(int(i))
return ans
digits = [5, 3, 2, 4]
ob1 = Solution()
print(ob1.plusOne(digits))입력
digits = [5, 3, 2, 4]
출력
[5, 3, 2, 5]
참고 사항
이 방법은 파이썬이 임의 정밀도 정수(arbitrary precision integer)를 기본적으로 지원하기 때문에 자릿수가 매우 긴 숫자에도 오버플로 걱정 없이 동작합니다. 다만 문자열 변환 과정에서 O(n)의 추가 연산이 발생하므로, 자릿수별 올림(carry)만 처리하는 최적화 방식도 면접 등에서 함께 언급하면 좋습니다.