[파이썬/Python] 백준 25305번: 커트라인

·2024년 6월 28일
0

알고리즘 문제 풀이

목록 보기
7/128
post-thumbnail

📌 문제 : 백준 25305번



📌 문제 탐색하기

N : 학생 수 (1 ≤ N ≤ 1,000)
k : 점수 높은 사람 수 (1 ≤ k ≤ N )
x : 각 학생의 점수 ( 0 ≤ x ≤ 10,000 )

✅ 입력 조건
1. N, k가 공백으로 구분되어 입력
2. N개의 점수 x들이 입력
✅ 출력 조건
1. 상 받는 커트라인 점수 출력
2. 커트라인 : 상 받는 사람들 중 점수가 가장 낮은 사람의 점수

각 학생의 점수 x들을 리스트로 입력받고 내림차순 정렬한다.
리스트의 인덱스는 0부터 시작하므로 정답에 k-1 인덱스에 있는 점수를 출력하면 된다.

가능한 시간복잡도

N개 입력받기 → O(N)O(N)
리스트 sort()O(NlogN)O(NlogN)

최종 시간복잡도
O(NlogN)O(NlogN)로 1 ≤ N ≤ 1,000 조건에서 제한 시간 내에 연산이 가능하다.

알고리즘 선택

sort() 함수로 내림차순 정렬하기.



📌 코드 설계하기

  1. N, k 입력
  2. N만큼 반복해서 x 입력
  3. x 저장한 리스트를 내림차순 정렬
  4. 커트라인 점수 출력


📌 시도 회차 수정 사항

1회차

  • 문제 풀 때 확인을 위해 작성한 print문을 실수로 삭제하지 않고 제출했다.


📌 정답 코드

import sys

input = sys.stdin.readline

# 1. N, k 입력
N, k = map(int, input().split())

# 2. N만큼 반복해서 x 입력
x_list = list(map(int, input().split()))

# 4. x 저장한 리스트를 내림차순 정렬
x_list.sort(reverse=True)

# 5. 커트라인 점수 출력
print(x_list[k-1])
  • 결과



📌 회고

  • 지난 번 문제로 깨달은 점을 고려해서 반례 상황을 찾으려고 노력했다. 코드에 자신감을 얻고 도전하는데 도움이 되었다.
  • 엉뚱한 부분에서 첫번째 시도에 출력 초과가 발생했다. 코드에 불필요한 부분이 없는지 다시 한번 확인하는 시간을 가져야 겠다.

0개의 댓글