Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 백준1312
- 백준2587
- 백준10757
- 컴퓨터네트워크
- 더오름
- 코테
- 백준1181
- 제주ICT
- 코딩테스트
- 백준 10814
- 백준25305
- 위니브
- 자료구조
- 백준2525
- 왈러스 연산자
- 파이썬
- 백준10039
- OSI7계층
- 백준1247
- 백준
- 컴프리헨션
- 코테준비
- 네트워크
- javascript
- 네트워크한조각
- 백준1284
- 백준2751
- Python
- 제주코딩베이스캠프
- 개발자
Archives
- Today
- Total
hyei-devlog
[Python/파이썬] 백준 25305 커트라인 본문
📍 문제
https://www.acmicpc.net/problem/25305
📍 전체 코드
N, k = map(int, input().split())
num_list = list(map(int, input().split()))
num_list.sort(reverse=True)
print(num_list[k-1])
📍 문제 풀이
- num_list = list(map(int, input().split())) 한 줄로 입력받아 정수 리스트로 변환한다.
- num_list.sort(reverse=True) 정수 리스트를 내림차순으로 정렬한다. (기본값: 오름차순)
- print(num_list[k-1]) 문제에서 요구하는 위치의 점수를 출력한다.
📍 문제 해결을 위한 고민
리스트를 정렬하는 방법에는 'sorted()'와 'sort()'가 있다.
둘 중 어떤 것을 사용할지 고민하다가 'sort()'를 선택했다.
`sorted()`는 원본 리스트를 변경하지 않기 때문에 새로운 리스트에 할당해야 하는 번거로움이 있다.
반면, `sort()`는 원본 리스트를 직접 정렬하므로 이를 사용했다.
직접 정렬하는 방식을 통해 불필요한 변수 생성을 피하고, 메모리를 절약하며, 코드를 더 간결하게 작성할 수 있었다.
⭐️ 중요 포인트 & 핵심 개념
파이썬에서 한 줄로 입력받은 정수들을 리스트로 변환하는 대표적인 방법
1. map()과 split()을 사용
numbers = list(map(int, input().split()))
2. 리스트 컴프리헨션 사용
numbers = [int(x) for x in input().split()]
3. sys.stdin.readline() 사용 (대용량 입력 처리 시)
import sys
numbers = list(map(int, sys.stdin.readline().split()))
sorted()와 sort() 비교
1. sorted() 사용하는 경우 (원본 유지, 새로운 리스트 반환)
num_list = [100, 76, 85, 93, 98]
num_list = sorted(num_list, reverse=True) # 새로운 리스트 반환
print(num_list) # [100, 98, 93, 85, 76]
✔️ 장점
- 원본을 변경하지 않고 새롭게 정렬된 리스트를 만들 수 있음
- 체이닝이 가능하여 가독성이 좋음
- 리스트가 필요할 때마다 새로운 정렬된 버전을 사용할 수 있음
❌ 단점
- 원본 리스트를 그대로 유지해야 하는 상황이 아니라면, 불필요하게 새로운 리스트를 할당하는 메모리 낭비가 발생할 수 있음
2. sort() 사용하는 경우 (원본 변경, 반환값 없음)
num_list = [100, 76, 85, 93, 98]
num_list.sort(reverse=True) # 원본 리스트를 직접 정렬
print(num_list) # [100, 98, 93, 85, 76]
✔️ 장점
- 메모리 효율적 (새로운 리스트를 만들지 않고 원본을 직접 정렬)
- 필요 없는 변수 할당 없이 깔끔함
❌ 단점
- 원본 리스트가 변경되므로 이전 순서를 유지해야 하는 경우에는 적합하지 않음
- 체이닝이 불가능 (num_list = num_list.sort(reverse=True) ❌ → None 반환됨)
📌 정리
- 메모리 절약, 코드 간결화, 불필요한 변수 생성 방지 → sort()
- 원본 유지, 새로운 리스트가 필요할 경우 → sorted()
'Online Judge > Baekjoon' 카테고리의 다른 글
[Python/파이썬] 백준 2587 대표값2 (0) | 2025.02.02 |
---|---|
[Python/파이썬] 백준 2575 오븐 시계 (0) | 2025.02.01 |
[Python/파이썬] 백준 1181 단어 정렬 (0) | 2025.01.29 |
[Python/파이썬] 백준 1284 집 주소 (0) | 2025.01.27 |
[Python/파이썬] 백준 10039 평균 점수 (0) | 2025.01.27 |