작성: Corn/sec, ChatGPT, 편집: Corn/sec

# Sol 1
def solution(num_list):
return num_list[::-1]
# Sol 2
def solution(num_list):
num_list.reverse()
return num_list
리스트를 뒤집는 방법에는 [::-1](슬라이싱)과 .reverse()(리스트 메서드) 두 가지가 있다.
두 방식은 같은 결과를 반환하지만, 작동 방식과 반환값, 메모리 사용 측면에서 차이가 있다.
def reverse_using_slicing(num_list):
return num_list[::-1]
original_list = [1, 2, 3, 4, 5]
reversed_list = reverse_using_slicing(original_list)
print(reversed_list) # [5, 4, 3, 2, 1]
print(original_list) # [1, 2, 3, 4, 5] (변경 없음)
✅ 원본 리스트 유지
✅ 간결한 코드
❌ 새로운 리스트를 생성하여 관리하므로 메모리 사용 증가
def reverse_using_reverse_method(num_list):
num_list.reverse()
return num_list
original_list = [1, 2, 3, 4, 5]
reverse_using_reverse_method(original_list)
print(original_list) # [5, 4, 3, 2, 1] (원본 변경됨)
✅ 새로운 리스트를 만들지 않아 메모리 효율적
✅ 대용량 리스트 처리 시 유리
❌ 원본 리스트가 변경됨
❌ 반환값이 None이므로 직접 반환하면 오류 발생 가능
.reverse()는 반환값이 없으므로, return num_list.reverse()를 하면 None이 반환된다.
따라서 .reverse()를 호출한 후 별도로 리스트를 확인해야 한다.
| 방식 | 원본 변경 여부 | 메모리 사용 | 사용 사례 |
| [::-1] | ❌ 변경 안 됨 | 🔺 증가 | 원본 유지 필요 |
| .reverse() | ✅ 변경됨 | ✅ 효율적 | 원본 변경 가능 |
[::-1]은 가독성이 좋고 간편하지만, 새로운 리스트를 생성하기 때문에 메모리를 추가로 사용.
반면, .reverse()는 원본 리스트를 직접 수정하므로 메모리 사용량이 적지만, 원본 유지가 필요할 경우 부적절.
상황에 따라 적절한 방식을 선택하면 된다.
| [프로그래머스 풀이]: Lv.1 / 약수의 합 (0) | 2025.02.05 |
|---|---|
| [프로그래머스 풀이]: Lv.0 / 세균 증식 (0) | 2025.02.04 |
| [프로그래머스 풀이]: Lv.0 / 최댓값 만들기 (1) (0) | 2025.02.04 |
| [프로그래머스] Lv.0 "0 떼기" (0) | 2024.12.31 |
| [프로그래머스 풀이]: [PCCE 기출문제] 6번 / 가채점 (0) | 2024.08.16 |