29. 정수를 저장한 배열, arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수 solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요.
1) 리턴하려는 배열이 빈 배열인 경우(arr의 길이가 1인 경우) -1을 채운 배열을 return
2) for 반복문을 사용해 arr의 숫자를 하나씩 불러오고
3) arr의 최소값 min(arr)가 아닐 경우 answer 변수에 추가(append)
4) 반복문이 끝나면 answer을 return
위와 같은 코드를 짜서 입력했는데 테스트1에서 시간 초과로 실패가 떴다.
왜인지 살펴보니까 for 반복문 안에 min(arr)을 넣은 것이 문제같았다.
반복문이 한번 돌 때마다 리스트의 최소값을 찾게 되어서 시간 초과가 뜬 것으로 추정되어 코드를 수정하였다.
#테스트1 실패(시간 초과)
def solution(arr):
if len(arr)==1:
return [-1]
answer = []
for num in arr:
if num != min(arr):
answer.append(num)
return answer
최소값을 담은 변수 min_number를 따로 만든 후 반복문을 돌리니 테스트가 통과되었다.
그러나 테스트1의 경우 다른 테스트에 비해 실행 시간이 긴 것을 확인할 수 있었다.
def solution(arr):
if len(arr)==1:
return [-1]
answer = []
min_number = min(arr)
for num in arr:
if num != min_number:
answer.append(num)
return answer
반복문을 사용하면 효율성 부분에서 기능이 떨어지는 것 같아서
remove 함수를 사용해 arr 리스트에서 바로 최소값을 제거해주고 return 하는 코드를 입력해봤다.
그 결과 테스트1 실행 시간이 6.02ms에서 1.09ms로 개선된 것을 확인할 수 있었다.
#remove 사용
def solution(arr):
if len(arr)==1:
return [-1]
else:
arr.remove(min(arr))
return arr
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Code Kata > [Python] Code Kata' 카테고리의 다른 글
[Python] 프로그래머스 Lv.1 약수의 개수와 덧셈 (1) | 2024.01.31 |
---|---|
[Python] 프로그래머스 Lv.1 수박수박수박수박수박수? (1) | 2024.01.30 |
[Python] 프로그래머스 Lv.1 핸드폰 번호 가리기 (0) | 2024.01.26 |
[Python] 프로그래머스 Lv.1 음양 더하기 (1) | 2024.01.22 |
[Python] 프로그래머스 Lv.1 나누어 떨어지는 숫자 배열 (0) | 2024.01.22 |