Daily LeetCode Challenge - 228. Summary Ranges

Min Young Kim·2023년 6월 12일
0

algorithm

목록 보기
170/198

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"
    }
}
profile
길을 찾는 개발자

0개의 댓글