Programmers/프로그래머스-제일 작은 수 제거하기-python

cosmos·2021년 3월 25일
3
post-thumbnail

문제📖

풀이🙏

  • 정수를 저장한 배열, arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성하라.
  • 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하라.
    -> list comprehension으로 if else문으로 arr의 len이 1보다 클시 for 반복문 + arr의 min과 비교를 통해 return을하는 코드를 작성했으나 시간초과가 떳다.
    -> 아무래도 for 반복문 + min이 시간초과의 큰 원인인것같다.
    -> for문을 돌면서 min인지 체크하고 아니면 append하는 방식에서 arr자체에서 minremove하는 방식으로 변경하였다.

시간초과 코드

def solution(arr):
    return [i for i in arr if i != min(arr)] if len(arr) > 1 else [-1]

정답 코드💻

# programmers, phase1 : 제일 작은 수 제거하기, python
def solution(arr):
    if len(arr) > 1:
        arr.remove(min(arr))
        
        return arr
    else:
        return [-1]

최적 코드

# - , - , - , - , jdyong 외 62 명 님 코드 참고
def rm_small(mylist):
    return [i for i in mylist if i > min(mylist)]

결과😎


출처 && 깃허브📝

https://programmers.co.kr/learn/courses/30/lessons/12935
github

2개의 댓글

comment-user-thumbnail
2023년 3월 15일

안녕하세요. 많이 도움됐습니다.
그런데 최적코드에서 배열이 빈 경우에 [-1]을 return하는 건 반영이 안되어 있는 것 같은데, 이건 혹시 어떻게 구현할 수 있을까요?

1개의 답글