leetcode#228 Summary Ranges

정은경·2022년 6월 21일
0

알고리즘

목록 보기
99/125

1. 문제

2. 나의 풀이

2-1. for문으로 문제 풀기

class Solution:
    def summaryRanges(self, nums: List[int]) -> List[str]:
        
        # |nums[i+1]-nums[i]| > 1일 때 새로운 range를 만드는 문제
        result = []
        
        if len(nums) < 1:
            return result
        
        a = nums[0]
        b = nums[0]
        for i in range(len(nums)):            
            b = nums[i]
            current_num = nums[i]
            
            if i >= (len(nums) -1):
                if (a == b):
                    result.append(str(a))
                else:
                    result.append(str(a)+"->"+str(b))
                break

            next_num = nums[i+1]
            if abs(next_num - current_num) > 1:
                if a == b:
                    result.append(str(a))
                else:
                    result.append(str(a)+"->"+str(b))
                a = nums[i+1]

        return result

2-2. 코드를 예쁘게 바꿔보기

class Solution:
    def summaryRanges(self, nums: List[int]) -> List[str]:
        
        # |nums[i+1]-nums[i]| > 1일 때 새로운 range를 만드는 문제
        result = []
        
        if len(nums) < 1:
            return result
        
        a = nums[0]
        b = nums[0]
        prev_num = nums[0]
        for i in range(1, len(nums)):            
            current_num = nums[i]
            if abs(current_num - prev_num) > 1:
                new_range = F'{str(a)}->{str(b)}' if a!=b else str(a)
                result.append(new_range)
                a = nums[i]
            
            prev_num = nums[i]
            b = nums[i]

        new_range = F'{str(a)}->{str(b)}' if a!=b else str(a)
        result.append(new_range)
        return result

3. Reference

profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글