첫번째 줄에 테스트케이스 갯수 T가 주어지고,
각 케이스별로 N개의 숫자로 이루어진 공백구분 숫자열이 주어지면
해당 숫자열중에서 s번째부터 e번째 까지의 수를 오름차순 정렬하여
K번째로 나타나는 숫자를 출력하는 프로그램 작성
입력예시)
2
6 2 5 3
5 2 7 3 8 9
15 3 10 3
4 15 8 16 6 6 17 3 10 11 18 7 14 7 15
*첫번째 줄은 테스트케이스 갯수 T
두번째 줄은 순서대로 N, s, e , K세번째 줄은 N개의 숫자로 이루어진 숫자열
출력예시)#1 7#2 6
내가 쓴 코드
#테스트케이스 갯수
T = int(input())
#테스트케이스 수 만큼 반복
for i in range(1,T+1):
N, s, e, k = map(int, input().split())
lst = list(map(int, input().split()))
lst2 = lst[s-1:e]
lst2.sort()
print('#%d %d'%(i,lst2[k-1]))
모범답안
T = int(input())
for t in range(T):
n, s, e, k = map(int,input().split())
a = list(map(int,input().split()))
lst = lst[s-1:e]
lst.sort()
print('#%d %d' %(t+1,a[k-1]))
모범답안 보고 반성하기
- 굳이 lst2를 만들 필요가 없었다 이 멍청이
- s번째부터 e번째 까지 슬라이싱 한 리스트를 다시 덮어씌우는 방식을 사용했으면 되었을 것
- 왜냐면 슬라이싱 한것만 필요하잖아..
- 쓸데없이 메모리공간을 사용한 죄
- 생각을 더 해라
반성했으면 다시 풀어보기
T = int(input())
for i in range(1,T+1):
N, s, e, k = map(int, input().split())
lst = list(map(int, input().split()))
lst = lst[s-1:e]
lst.sort()
print('#%d %d' %(i,lst[k-1]))
'코딩테스트 준비 with Python > 내가 보려고 정리하는 문풀' 카테고리의 다른 글
자릿수의 합 (2) | 2024.06.08 |
---|---|
정다면체 (0) | 2024.06.07 |
대표값 (0) | 2024.06.06 |
K번째 큰 수 (0) | 2024.06.06 |
K번째 약수 (0) | 2024.06.06 |