어떤 숫자가 배열 형태로 저장되어 있다고 가정해 봅시다. 예를 들어 숫자가 534라면 [5, 3, 4]처럼 각 자릿수별로 저장되는 방식입니다. 이번 문제는 이러한 배열 형태의 숫자에 또 다른 정수 k를 더하고, 그 결과 역시 자릿수 배열 형태로 반환하는 것입니다.
문제 해결 접근 방법
이 문제는 다음과 같은 단계로 해결할 수 있습니다.
- 배열의 각 자릿수를 문자열로 변환한 뒤 하나의 문자열로 연결합니다.
- 연결된 문자열을 정수(int)로 변환하고, 여기에 k를 더합니다.
- 결과값을 다시 문자열로 변환한 후, 각 자릿수를 분리하여 새로운 배열을 만듭니다.
구현 예제
아래 코드를 통해 실제 구현 방법을 확인해 보겠습니다.
class Solution(object):
def addToArrayForm(self, A, K):
num_A = int(''.join(str(i) for i in A))
res = list(str(num_A + K))
res = list(map(int, res))
return res
ob1 = Solution()
print(ob1.addToArrayForm([5, 3, 4], 78))입력
[5, 3, 4] 78
출력
[6, 1, 2]
코드 설명
위 코드에서 ''.join(str(i) for i in A) 부분은 배열 [5, 3, 4]를 문자열 "534"로 변환하는 과정입니다. 이후 int() 함수로 정수화한 뒤 k인 78을 더하면 612가 됩니다. 마지막으로 결과를 다시 문자열로 바꾸고 map()을 활용해 각 문자를 정수로 변환하면 최종 결과인 [6, 1, 2]를 얻을 수 있습니다.
이 방식은 간단하고 직관적이지만, 매우 큰 숫자를 다룰 경우 파이썬의 임의 정밀도 정수 연산 덕분에 오버플로우 걱정 없이 처리할 수 있다는 장점이 있습니다.