본문 바로가기
챌린지/코딩 테스트 30일 챌린지

[코딩 테스트 30일 챌린지] : 02

by 오주현 2022. 6. 13.
반응형
코딩 테스트 30일 챌린지

푼 문제 수 : 1
문제 요약

테스트 케이스가 주어지고 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

 

출력:

#1 7

#2 6

 

풀이
t = int(input())
for i in range(t):
    n, s, e, k = map(int, input().split())
    a = list(map(int, input().split()))
    a = a[s-1:e]
    a.sort()
    print("#%d %d" %(i+1, a[k-1]))

전체 풀이는 위와 같다. 조금 더 자세히 설명하기 위해 코드마다 주석을 달아봤는데 떼어서 보면 아래와 같다.

 

# t = 테스트 케이스(2)회 출력
t = int(input())

테스트 케이스 출력을 위한 input값이다.

 

# 테스트 케이스 만큼 실행한다. 2회의 테스트 케이스를 뽑기 위해 2회 실행.
for i in range(t):

테스트 케이스 만큼 실행을 하기 위해 for문을 만들어 주었다.

 

# n = 첫 번째 줄(6)
# s ~ e = 오름차순정렬대상(2) ~ (5)
# k = 번째 수 출력(3)
n, s, e, k = map(int, input().split())

각 값을 받는다.

 

# n개의 숫자를 받기 위한 list 생성
a = list(map(int, input().split()))

정렬의 대상이 되는 숫자를 받기 위해 list로 만들어주었다.

 

# list a의 0번째 인덱스에 첫 번째 값이 들어가 있으므로 s번째는 s-1이 된다.
a = a[s-1:e]

위에서 받은 배열을 s부터 e까지 a배열에 담아준다.

 

# 오름차순정렬을 후 k번째를 출력해야 하므로 sort() 해준다.
a.sort()

오름차순정렬을 해주고

 

# 출력 예제에 따라 포멧 형식을 다듬어 알맞게 출력을 해준다.
print("#%d %d" %(i+1, a[k-1]))

마지막으로 출력을 해준다. 첫 출력이 이뤄지고 두 번째 테스트 케이스 출력을 위해 다시 for문이 실행되면서 2개의 테스트 케이스가 나오게 된다.


반응형

댓글