본문 바로가기
Programming/Python

[프로그래머스 Python] 제일 작은 수 제거하기 (속도 이슈..?)

by 용스토리랜드 2024. 7. 5.

제일 작은 수 제거하기

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

  • 조건1 : 가장 작은 수를 제거한 배열
  • 조건2 : 배열의 길이가 1초과일 경우 [-1]을 리턴

 

✅ <입출력 예시>

 

 <문제 풀이> 

결론부터 말하자면, 문제에서 정렬을 하라는 조건이 없는데, 나의 return 값은 항상 내림차순 정렬된 형태로 나온다는 것. 그래서 테스트 케이스에서는 실행이 되지만, 다른 경우는 실행 X

정확성이 0%에 수렴이라니...ㅋㅋㅋㅋㅋ

 

<틀린 풀이>
def solution(arr):
    if len(arr) > 1:    
        arr.sort(reverse = True)
        arr_pop = arr.pop()
        return arr
    else : 
        return [-1]

<정답 케이스 one of them>
def solution(arr):
    if len(arr) > 1:
        arr.remove(min(arr))
        return arr
    else:
        return [-1]

 

  • <나의 틀린 풀이>  리스트를 내림차순 정렬 후 제일 뒤의 값을 제거했습니다. 
  • <정답 케이스>  리스트에서 최소값을 찾은 후 remove 함수를 통해 리스트에서 해당 요소 제거 ! ... ㅎ
문제를 차근차근 다시 읽어보기 ! 놓치고 있는 것이 없을까 ? 라는 의문가지기..!



 

<참고 Python 함수 및 문법들>

  • len(arr): 리스트의 길이를 반환합니다.
  • arr.sort(reverse=True): 리스트를 내림차순으로 정렬합니다.
  • arr.pop(): 리스트의 마지막 요소를 제거하고 그 값을 반환합니다.
  • arr.remove(value): 리스트에서 첫 번째로 일치하는 특정 값을 제거합니다.
  • min(arr): 리스트에서 가장 작은 값을 반환합니다.
  • if 조건문: 특정 조건을 만족하는지 확인합니다.
  • else: 조건이 만족되지 않을 때 실행되는 블록을 지정합니다.
  • return value: 함수에서 값을 반환합니다.

 

반응형