[LeetCode] Arrays_101 - Introduction

2022. 3. 1. 20:0003. Resources/Python

728x90
반응형

배열을 다루는 Arrays_101의 맨 첫 챕터다.
총 3문제가 있었다.

이 챕터의 문제는 이미 다 풀었는데, 다시 한 번 블로그에 올리면서 복기도 하고, 상위 코드와의 차이점도 고민해보자.

Max Consecutive Ones

배열을 입력으로 주었을 때, 연속해서 1이 나온 횟수 중 제일 큰 값을 찾아내는 문제였다.
문제가 쉬워서 그런지 코드도 직관적으로 나왔고, 바로 통과도 했다.

class Solution:
    def findMaxConsecutiveOnes(self, nums: List[int]) -> int:
        count = 0
        count_max = 0
        for num in nums:
            if num == 1:
                count += 1
            else:
                count = 0

            if count >= count_max:
                count_max = count
        return count_max

결과는

  • 연산시간: 상위 41.52%
    • 나보다 상위에 있는 코드와 차이점: if 문 하나에서 최대값 판단도 같이 처리함
  • 메모리: 상위 68.88%
    • 나보다 상위에 있는 코드와 차이점: 잘 모르겠다..

Find Numbers with Even Number of Digits

배열을 입력으로 주었을 때, 자릿수가 짝수인 정수의 갯수를 구하는 문제였다.
역시 문제가 쉬워서 직관적으로 코딩할 수 있었다.

class Solution:
    def findNumbers(self, nums: List[int]) -> int:
        count_even = 0
        for num in nums:
            if len(str(num))%2 == 0:
                count_even += 1

        return count_even

결과는

  • 연산시간: 상위 82.78%
    • 나보다 상위에 있는 코드와 차이점: 완전히 똑같은 코드인데 차이가 나는거면 변수 길이가 길어서 그런건가..?
  • 메모리: 상위 5.34%
    • 나보다 상위에 있는 코드와 차이점: 함수를 하나 더 만들어서 변수 자체가 없도록 만들었다.

Squares of a Sorted Array

배열을 입력으로 주었을 때, 배열 내의 모든 원소를 제곱하고 오름차순 정렬하는 문제였다.
이 문제도 쉽게 코딩할 수 있었다.

class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        square_list = []
        for idx, num in enumerate(nums):
            square_list.append(num**2)
        return sorted(square_list)

결과는

  • 연산시간: 상위 9.2%
    • 나보다 상위에 있는 코드와 차이점: 파이써닉한 방법으로 문제를 풀었다. for문 처리를 sorted 함수 안에서 처리했다. 대박!
  • 메모리: 상위 83.88%
    • 나보다 상위에 있는 코드와 차이점: 새롭게 리스트를 만들어서 문제를 푼게 아니라 입력으로 들어온 nums 리스트에서 바로 작업했다.

맨 첫 챕터여서 그런지 해결하기 쉬운 문제들이 많이 나왔다.
일단 문제는 풀었지만, 다른 사람들 코드를 보면서 배울게 많은 것 같다.
역시 뭘 하든 복기가 중요하다!

반응형