
프로그래머스 LV1 제일 작은 수 제거하기(연습문제)
프로그래머스 lv1 제일 작은 수 제거하기(연습문제)
문제 설명
정수를 저장한 배열, 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] |
함수 정리
Docstring:
min(iterable, *[, default=obj, key=func]) -> value
min(arg1, arg2, *args, *[, key=func]) -> value
iterable 에서 가장 작은 항목이나 두 개 이상의 인자 중 가장 작은 것을 돌려줍니다.
하나의 위치 인자
가 제공되면, 그것은 이터러블 이어야 합니다. iterable
에서 가장 작은 항목을 돌려줍니다. 두 개 이상의 위치 인자가 제공되면, 위치 인자 중 가장 작은 것을 돌려줍니다.
선택적 키워드-전용 인자가 두 개 있습니다. key 인자는 list.sort()
에 사용되는 것처럼 단일 인자 순서 함수를 지정합니다.
default 인자는 제공된 iterable이 비어있는 경우 돌려줄 객체를 지정합니다. iterable이 비어 있고 default 가 제공되지 않으면 ValueError
가 발생합니다.
여러 항목이 최솟값이면, 함수는 처음 만난 항목을 돌려줍니다.
이것은 sorted(iterable, key=keyfunc)[0]
와 heapq.nsmallest(1, iterable, key=keyfunc)
같은 다른 정렬 안정성 보존 도구와 일관성을 유지합니다.
remove 와 del의 차이
del a[인덱스]
리스트 a의 해당 인덱스 원소가 삭제된다.
a.remove(원소)
리스트 a의 해당 원소가 삭제된다.
풀이
# 내 풀이
def solution(arr):
answer = []
if len(arr) > 1:
del arr[arr.index(min(arr))]
answer = arr
else:
answer.append(-1)
return answer
solution([10])
>>>[-1]
빈 리스트 answer 를 만들어주고 arr의 len이 1보다 클 경우 에서 가장 작은 인덱스를 지운 후에 그대로 리턴
len이 1보다 작을 경우는 빈리스트에 -1을 넣어주고 리턴
#다른 사람 코드
def solution(arr):
arr.remove(arr[arr.index(min(arr))])
return arr if len(arr) > 1 else [-1]
solution([4,3,2,1])
>>>[4, 3, 2]
remove로 arr에서 제일 작은 인덱스를 빼주고, arr의 길이가 1보다 크면 arr를 리턴, 아니면 [-1]을 리턴
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges