Swift solution for LeetCode #989. Add to Array-Form of Integer
- Ref: LeetCode
- My GitHub Repo: LeetCode_Swift
- Difficulty: Easy
- Topics: Array
Problem
For a non-negative integer X, the array-form of X is an array of its digits in left to right order. For example, if X = 1231, then the array form is [1,2,3,1].
Given the array-form A of a non-negative integer X, return the array-form of the integer X+K.
음수가 아닌 정수 X의 경우, X의 배열 형식은 왼쪽에서 오른쪽으로 자릿수의 배열입니다. 예를 들어, ‘X = 1231’이면 배열 형식은 ‘[1,2,3,1]’입니다.
음이 아닌 정수 X의 배열 형식 A가 주어지면 정수 ‘X + K’의 배열 형식을 반환합니다.
Example
Example 1:
Input: A = [1,2,0,0], K = 34
Output: [1,2,3,4]
Explanation: 1200 + 34 = 1234
Example 2:
Input: A = [2,7,4], K = 181
Output: [4,5,5]
Explanation: 274 + 181 = 455
Example 3:
Input: A = [2,1,5], K = 806
Output: [1,0,2,1]
Explanation: 215 + 806 = 1021
Example 4:
Input: A = [9,9,9,9,9,9,9,9,9,9], K = 1
Output: [1,0,0,0,0,0,0,0,0,0,0]
Explanation: 9999999999 + 1 = 10000000000
Note
- 1 <= A.length <= 10000
- 0 <= A[i] <= 9
- 0 <= K <= 10000
- If A.length > 1, then A[0] != 0
Solution
- K를 Int 배열로 형변환 한다.
- A와 K를 더 큰배열, 작은 배열로 구분한다.
- 작은 배열을 순회하여 큰배열의 각 원소와 더한다.
- 큰 배열을 역순으로 순회하며 자릿수를 올려준다.
Submissions
- Runtime: 268 ms, faster than 80.00% of Swift online submissions for Add to Array-Form of Integer.
- Memory Usage: 21.6 MB, less than 100.00% of Swift online submissions for Add to Array-Form of Integer.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
func addToArrayForm(_ A: [Int], _ K: Int) -> [Int] {
let arrK = Array(String(K)).map{$0.wholeNumberValue!}
var answer: Array<Int>
var add: Array<Int>
// 더 큰 배열을 answer로 한다.
answer = (A.count >= arrK.count) ? A : arrK
if A.count >= arrK.count {
answer = A
add = arrK
} else {
answer = arrK
add = A
}
let offset = answer.count - add.count
for i in add.indices {
answer[i + offset] += add[i]
}
// 역순으로 순회하며 각 원소가 10이상이면 자릿수를 올려준다.
for i in answer.indices.reversed() {
if answer[i] > 9 {
answer[i] = answer[i] % 10
if i == 0 {
// 맨 앞이라면 맨 앞에 새로운 원소로 추가
answer.insert(1, at: 0)
} else {
answer[i - 1] += 1
}
}
}
return answer
}
Leave a comment