Languages/Python

[프로그래머스] 제일 작은 수 제거하기 (python)

genie0000 2025. 4. 17. 21:02
link icon

💻 프로그래머스 - 제일 작은 수 제거하기 문제

👉 문제 보러 가기

 

🧩문제 설명

제일 작은 수 제거하기 문제

🧩문제 요약

  • 입력: 정수 배열 arr (길이 1 이상, 모든 요소는 서로 다름)
  • 요구사항:
    • 가장 작은 수 하나를 제거한 배열을 반환
    • 만약 배열의 길이가 1이면, [-1]을 반환
  • 예시:
    • arr = [4, 3, 2, 1] ➝ [4, 3, 2]
    • arr = [10] ➝ [-1]

 


🔍 풀이 코드

def solution(arr):
    if len(arr) == 1:
        return [-1]
    
    min_value = min(arr)
    arr.remove(min_value)
        
    return arr

min_value = min(arr)

  • min() 함수는 리스트에서 가장 작은 값을 찾아줍니다.
  • 예를 들어 arr = [4, 3, 2, 1]이면 min(arr)는 1을 반환합니다.
  • 이렇게 찾은 최솟값을 min_value 변수에 저장해 둡니다.

arr.remove(min_value)

  • remove() 함수는 리스트에서 처음 등장하는 특정 값을 제거합니다.
  • 이 경우에는 min_value를 제거하게 되므로, 가장 작은 값이 리스트에서 사라집니다.
  • arr = [4, 3, 2, 1]
    min_value = 1
    arr.remove(1)을 하면 arr = [4, 3, 2]로 바뀝니다.

 


 마무리 정리

  • 리스트 관련 주요 함수
min() 가장 작은 값 반환
max() 가장 큰 값 반환
remove() 값 하나 제거
pop(), del 인덱스로 제거
sorted() 정렬된 새 리스트 만들기
sort() 원본 리스트 정렬
index() 특정 값의 위치 찾기 (괄호안 숫자의 인덱스를 반환)
clear() 리스트 전체 초기화 (리스트를 비움)

✅ pop()

  • 기능: 특정 인덱스의 요소를 삭제하고 반환
arr = [3, 1, 5]
print(arr.pop())    # 5 (기본은 마지막 요소)
print(arr)          # [3, 1]
print(arr.pop(0))   # 3
print(arr)          # [1]

✅ del

  • 기능: 인덱스를 사용해 요소를 삭제 (pop()처럼 반환은 안 함)
arr = [3, 1, 5]
del arr[1]
print(arr)  # [3, 5]

✅ sort()

  • 기능: 리스트를 정렬(기본값은 리스트를 오름차순으로 정렬)
numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)  # [1, 2, 5, 9]
  • 내림차순 정렬을 위해서는 (reverse = True) 사용
numbers = [5, 2, 9, 1]
numbers.sort(reverse = True)
print(numbers)  # [9, 5, 2, 1]
  • 원본리스트를 유지하고 싶으면 sorted() 사용
# 예시
a = [3, 1, 2]

# sort()
a.sort()
print(a)  # [1, 2, 3]

# sorted()
b = [3, 1, 2]
c = sorted(b)
print(b)  # [3, 1, 2]  (원본 유지)
print(c)  # [1, 2, 3]  (정렬된 복사본)

 

 

 


📌 아직 배우는 중이라 부족한 부분이 있을 수 있습니다.
혹시 잘못된 내용이나 더 나은 방법이 있다면 알려주세요 🙏
감사합니다! 😄