[파이썬 코드가타]
제일 작은 수 제거하기
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문을 돌아서 시간복잡도가 올라감
'TIL' 카테고리의 다른 글
[240207] 문자열, 숫자 데이터 타입 변환(astype, to_numeric) (0) | 2024.02.08 |
---|---|
[240206] 중첩 딕셔너리? JSON 포맷 데이터프레임으로 평면화 (0) | 2024.02.06 |
[240201-02] 머신러닝 - 회귀/분류 모델링 심화, 비지도 학습, 딥러닝 (0) | 2024.02.02 |
[240201] 머신러닝 - EDA, 데이터 전처리(이상치/결측치/인코딩/스케일링/데이터분리) (1) | 2024.02.01 |
[240131] SQL: 코드카타 118 & 파이썬: 코드카타 28 (0) | 2024.01.31 |