ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 제일 작은 수 제거하기
    Programmers 2023. 3. 19. 16:09
    728x90

    문제 설명

    정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.

    제한 조건

    • arr은 길이 1 이상인 배열입니다.
    • 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

    입출력 예

    arr return

    [4,3,2,1] [4,3,2]
    [10] [-1]
    </aside>  

    나의 풀이

    def solution(arr):
        if len(arr) == 1:
            return [-1]
        else:
            arr.remove(min(arr))
            return arr
    

    다른 사람의 풀이

    def rm_small(mylist):
        return [i for i in mylist if i > min(mylist) else -1]
    
    • 주어진 리스트가 [3,2,1,1,1] 일 경우 나의 풀이는 [3,2,1,1] 이지만, [3,2]로 반환되므로 이게 정답이라고 생각한다
    • 다만 min을 남발하게 되면 시간복잡도가 엉망이 될 수 있다고 한다
      • 내장 함수 min은 자체적으로 정렬 후 최솟값을 찾기에 그런 것으로 생각된다
      def solution(arr):
          answer = []
          if len(arr) == 1:
              return [-1]
      
          else:
              min=arr[0]
              for i in arr:
                  if min>i:
                      min=i
              arr.remove(min)
              return arr
      
      • 또 다른 사람의 풀이인데, min을 정렬의 첫 값으로 지정을 해서 직접 정렬을 하는 코드를 썼기에 더 코딩테스트에 적합한 코드인 것 같다
    728x90

    'Programmers' 카테고리의 다른 글

    나누어 떨어지는 숫자배열  (0) 2023.03.19
    실패율  (0) 2023.03.19
    소수 찾기  (0) 2023.03.19
    2016년  (0) 2023.03.19
    콜라츠 추측  (0) 2023.03.19
Designed by Tistory.