Juni_Dev_log

(인프런) 파이썬 알고리즘 문제1-2 "K번째 수" 본문

CodingTest/인프런 (Algorithm)

(인프런) 파이썬 알고리즘 문제1-2 "K번째 수"

Juni_K 2021. 2. 11. 16:10

python

Problem

K번째 수 N개의 숫자로 이루어진 숫자열이 주어지면 해당 숫자열중에서 s번째부터 e번째 까지의 수를 오름 차순 정렬했을 때 k번째로 나타나는 숫자를 출력하는 프로그램을 작성하세요.

 

▣ 입력설명

첫 번째 줄에 테스트 케이스 T(1<=T<=10)이 주어집니다.

각 케이스별 첫 번째 줄은 자연수 N(5<=N<=500), s, e, k가 차례로 주어진다.

두 번째 줄에 N개의 숫자가 차례로 주어진다.

 

▣ 출력설명

각 케이스별 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

 

▣ 출력예제

#1 7

#2 6

 

입력예제1 해설 :

case 1 : 2 7 3 8의 숫자 중 오름차순 정렬 했을 때 3번째 숫자는 7이다.

case 2 : 8 16 6 6 17 3 10 11의 숫자 중 오름차순 정렬 했을 때 3번째 숫자는 6이다.

 

💯 Solution ①

: before Lecture (Only My Thinking)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 파일에서 값을 가져옴
import sys
# 채점을 할 때는 아래 코드 주석 처리
sys.stdin=open("input.txt""rt")
 
# Case의 갯수
Case=int(input())
 
for i in range(Case):
    # input.txt의 두 번째 줄을 map()을 통해서 가져와서 split()으로 나눠서 N,s,e,k에 배정한다.
    N, s, e, k=map(int, input().split())
    # input.txt의 세 번째 줄을 list형식으로 가져온다.
    give_list=list(map(int, input().split()))
 
    # 주어진 리스트를 인덱싱한다.
    sorted_list=give_list[s-1:e]
    #  sort() 오름차순을 한다.
    sorted_list.sort()
    # 오름차순 정렬된 리스트의 k번째 값을 가져온다. (인덱스 기준, k-1)
    result = sorted_list[k-1]
 
    # 출력 형식에 맞춰서 출력한다.
    print("#%d %d" %(i+1, result))
cs

 

 

💯 Solution ② 

: after Lecture (Tutor Advice)

1
2
3
4
5
6
7
8
9
10
11
12
13
import sys
sys.stdin=open("input.txt","rt")
 
# 케이스 갯수
T=int(input())
for t in range(T):
    n, s, e, k=map(int,input().split())
    a=list(map(int, input().split()))
    print(a)
 
    a=a[s-1:e]
    a.sort()
    print("#%d %d" %(t+1, a[k-1]))
cs

 

Comments