[프로그래머스] 제일 작은 수 제거하기 - 파이썬

송승우·2023년 10월 18일
0

Coding Test

목록 보기
19/35

문제 설명


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


제한 조건


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

입출력 예


arrreturn
[4,3,2,1][4,3,2]
[10][-1]

solution.py


def solution(arr):
    answer = []
    temp = 0
    
    for i in arr:
        answer.append(i)
    
    arr = sorted(arr, reverse=True)
    temp = arr[-1]
    arr.pop()
    
    if len(arr) == 0:
        return  [-1]
    
    for i in answer:
        if i == temp:
            answer.pop(answer.index(i))
    
    return answer

해당 풀이 과정은 코드가 조금 지져분하고 굳이 정렬을 하지 않아도 된다.
경우를 arr의 길이가 1일 때와 아닐 때로 나누고 해당 부분에서 최솟값을 찾아서 빼주는 코드가 훨씬 깔끔하고 이쁘다.

def solution(arr):
    if len(arr) == 1:
    	return [-1]
        
    else:
    	mini = arr[0]
        
        for i in arr:
        	if mini > i:
            	mini = i
        
        arr.remove(mini)
        
        return arr
profile
아무것도 하기 싫어요..

0개의 댓글