Problem From.
https://leetcode.com/problems/summary-ranges/
오늘 문제는 array 가 주어졌을때, 1씩 증가하는 수를 범위로 나눠서 1,2,3 이면 1->3 으로 바꾸고 5 7 9 면 중간에 7 은 따로 빼서 만들어준 리스트를 반환하는 문제였다.
풀이는 특별한 알고리즘 없이 그냥 처음부터 검사해나가면서, 연속된 숫자면 -> 가 들어가게 바꿔주고 아니면 그냥 더해주는 식으로 구현하였다.
class Solution {
fun summaryRanges(nums: IntArray): List<String> {
if (nums.isEmpty()) return listOf()
val answer = ArrayList<String>()
var l = 0
for (r in 1..nums.size - 1) {
if (nums[r - 1] + 1 < nums[r]) {
answer.add(make(nums[l], nums[r - 1]))
l = r
}
}
answer.add(make(nums[l], nums.last()))
return answer
}
private fun make(a: Int, b: Int) : String {
return if(a == b) "$a"
else "$a->$b"
}
}