본문 바로가기

TIL

[240205] SQL: 코드카타 119~121 & 파이썬: 코드카타 29~30

[파이썬 코드가타] 

제일 작은 수 제거하기

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문을 돌아서 시간복잡도가 올라감