JSITCLUB

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

파이썬/문제풀이

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

jsitclub 2020. 8. 24. 09:45

문제 설명

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

제한 조건

  • arr은 길이 1 이상인 배열입니다.

  • 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

입출력 예

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

 

 

 

코딩테스트 연습 - 제일 작은 수 제거하기

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

programmers.co.kr

 

풀이 및 코드

 

문제 요약

리스트에서 가장 작은 수 제거하되 결과가 빈 리스트면 [-1]

 

문제 해설

지금까지는 주로 반복문과 조건문으로 풀어왔는데, 이번에는 파이썬의 함수와 리스트의 메서드를 이용하여 풀어보겠습니다.

이 방법을 사용하면 이미 구현된 함수들을 사용하는 것이므로 훨씬 간단하게 해결할 수 있습니다.

 

이 문제는  다음과 같은 순서로 해결하면 됩니다.

1. 리스트에서 가장 작은 수 찾기

2. 찾은 작은수 삭제하기

3. 결과가 빈 리스트면 [-1]을 리턴하기

 

리스트에서 가장 작은 수를 찾는 함수는 min() 함수를 이용하면 됩니다.

그런 후 찾은 값을 remove()를 이용하여 지우면 됩니다.

 

리스트에서 값을 삭제하는 메서드는 두 가지가 있는데, remove() 메서드는 매개변수로 주어진 값을 지우는 메서드이고, pop() 메서드는 매개변수로 주어진 위치의 값을 지우는 메서드입니다.

 

여기서는 찾은 최솟값을 지워야 하므로 remove() 메서드를 사용하겠습니다.  참고로 remove() 메서드는 리턴 값이 없고 주어진 리스트를 바로 바꿔줍니다.

 

 

결과코드

def solution(arr):
    
    arr.remove(min(arr))

    if len(arr)==0:
        return [-1]
    else:
        return arr

 

 

정답 확인

이 문제는 간단히 끝났네요. 수고하셨습니다.

Comments