문제
You are given a large integer represented as an integer array digits, where each digits[i] is the ith digit of the integer. The digits are ordered from most significant to least significant in left-to-right order. The large integer does not contain any leading 0's.
Increment the large integer by one and return the resulting array of digits.
Example 1:
Input: digits = [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.
Incrementing by one gives 123 + 1 = 124.
Thus, the result should be [1,2,4].
Example 2:
Input: digits = [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.
Incrementing by one gives 4321 + 1 = 4322.
Thus, the result should be [4,3,2,2].
Example 3:
Input: digits = [9]
Output: [1,0]
Explanation: The array represents the integer 9.
Incrementing by one gives 9 + 1 = 10.
Thus, the result should be [1,0].
Constraints:
- 1 <= digits.length <= 100
- 0 <= digits[i] <= 9
- digits does not contain any leading 0's.
풀이
풀이 접근 과정
처음엔 그냥 맨 뒷자리만 +1을 하면 되겠구나 생각했다.
그런 경우 [9]가 [10]이 되면서 정답인 [1,0]이 되지 않았다.
그래서 그 부분만 예외처리를 해줬더니 [99]에서 문제가 생겼다.
그냥 IntArray를 int로 변환하여 +1을 해주고 다시 IntArray로 변환하는 방법을 택했다.
최종 소스코드
import kotlin.math.pow
class Solution {
fun plusOne(digits: IntArray): IntArray {
var num = 0
digits.forEachIndexed { idx, i ->
num += i * (10.0).pow(digits.size-1-idx).toInt()
}
val array = (++num).toString().toCharArray()
return array.map { it.toString().toInt() }.toIntArray()
}
}
- IntArray를 한자리씩 계산하여 Int로 변환하였다.
- 변환한 Int 값에 +1을 추가하였고, 이를 CharArray로 변환하였다.
- 변환한 CharArray를 map을 사용하여 안에 값들을 int로 바꾸고 IntArray로 변환하여 리턴하였다.
'LeetCode > Kotlin | Easy' 카테고리의 다른 글
[LeetCode/Kotlin]Easy - 169. Majority Element (0) | 2023.06.30 |
---|---|
[LeetCode/Kotlin]Easy - 217. Contains Duplicate (0) | 2023.06.10 |
[LeetCode/Kotlin]Easy - 9. Palindrome Number (0) | 2023.06.10 |
[LeetCode/Kotlin]Easy - 290. Word Pattern (0) | 2023.06.05 |
[LeetCode/Kotlin]Easy - 1470. Shuffle the Array (0) | 2023.06.05 |
문제
You are given a large integer represented as an integer array digits, where each digits[i] is the ith digit of the integer. The digits are ordered from most significant to least significant in left-to-right order. The large integer does not contain any leading 0's.
Increment the large integer by one and return the resulting array of digits.
Example 1:
Input: digits = [1,2,3]
Output: [1,2,4]
Explanation: The array represents the integer 123.
Incrementing by one gives 123 + 1 = 124.
Thus, the result should be [1,2,4].
Example 2:
Input: digits = [4,3,2,1]
Output: [4,3,2,2]
Explanation: The array represents the integer 4321.
Incrementing by one gives 4321 + 1 = 4322.
Thus, the result should be [4,3,2,2].
Example 3:
Input: digits = [9]
Output: [1,0]
Explanation: The array represents the integer 9.
Incrementing by one gives 9 + 1 = 10.
Thus, the result should be [1,0].
Constraints:
- 1 <= digits.length <= 100
- 0 <= digits[i] <= 9
- digits does not contain any leading 0's.
풀이
풀이 접근 과정
처음엔 그냥 맨 뒷자리만 +1을 하면 되겠구나 생각했다.
그런 경우 [9]가 [10]이 되면서 정답인 [1,0]이 되지 않았다.
그래서 그 부분만 예외처리를 해줬더니 [99]에서 문제가 생겼다.
그냥 IntArray를 int로 변환하여 +1을 해주고 다시 IntArray로 변환하는 방법을 택했다.
최종 소스코드
import kotlin.math.pow
class Solution {
fun plusOne(digits: IntArray): IntArray {
var num = 0
digits.forEachIndexed { idx, i ->
num += i * (10.0).pow(digits.size-1-idx).toInt()
}
val array = (++num).toString().toCharArray()
return array.map { it.toString().toInt() }.toIntArray()
}
}
- IntArray를 한자리씩 계산하여 Int로 변환하였다.
- 변환한 Int 값에 +1을 추가하였고, 이를 CharArray로 변환하였다.
- 변환한 CharArray를 map을 사용하여 안에 값들을 int로 바꾸고 IntArray로 변환하여 리턴하였다.
'LeetCode > Kotlin | Easy' 카테고리의 다른 글
[LeetCode/Kotlin]Easy - 169. Majority Element (0) | 2023.06.30 |
---|---|
[LeetCode/Kotlin]Easy - 217. Contains Duplicate (0) | 2023.06.10 |
[LeetCode/Kotlin]Easy - 9. Palindrome Number (0) | 2023.06.10 |
[LeetCode/Kotlin]Easy - 290. Word Pattern (0) | 2023.06.05 |
[LeetCode/Kotlin]Easy - 1470. Shuffle the Array (0) | 2023.06.05 |