TIL
[240205] SQL: 코드카타 119~121 & 파이썬: 코드카타 29~30
동명이인B
2024. 2. 5. 15:11
[파이썬 코드가타]
제일 작은 수 제거하기
https://school.programmers.co.kr/learn/courses/30/lessons/12935
1) 어떤 문제가 있었나
리스트 내 숫자 중 최솟값을 뺀 리스트를, 숫자가 1개라면 -1을 넣어서 반환하는 문제
2) 내가 시도해본 건 무엇인가
for문과 if문으로 최솟값이 아니면 빈리스트에 값을 넣고, 리스트가 비었다면 -1 반환 > 일부 테스트 시간 초과로 오답 처리
def solution(arr):
answer = []
for i in arr:
if i != min(arr):
answer.append(i)
if len(answer) == 0:
answer.append(-1)
return answer
3) 어떻게 해결했나
다른 사람 풀이를 참조하여 remove로 최솟값을 제거하는 방식을 확인
append를 하면 반복문이 여러 번 돌아야 하지만, remove 하면 한 번만 돌면 됨
def solution(arr):
a = min(arr)
arr.remove(a)
if len(arr) == 0:
arr.append(-1)
return arr
4) 무엇을 새롭게 알았나
- 동일한 문제도 접근 방식에 따라 효율이 달라질 수 있어 고민하여 풀이 필요
- min 적용시 최솟값을 찾기 위해 자체적으로 for문을 돌아서 시간복잡도가 올라감