본문 바로가기

프로그래밍/백준

[백준] 2693. N번째 큰 수

문제

배열 A가 주어졌을 때, N번째 큰 값을 출력하는 프로그램을 작성하시오.

배열 A의 크기는 항상 10이고, 자연수만 가지고 있다. N은 항상 3이다.

입력

첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 배열 A의 원소 10개가 공백으로 구분되어 주어진다. 이 원소는 1보다 크거나 같고, 1,000보다 작거나 같은 자연수이다.

출력

각 테스트 케이스에 대해 한 줄에 하나씩 배열 A에서 3번째 큰 값을 출력한다.

 

 

 

나의 풀이

 

 

t=int(input())
n=3
aa=[]

for i in range(t):					# 테스트 케이스 입력
    a=list(map(int, input().split()))  # 띄어쓰기로 슬라이싱하여 리스트화
    aa.append(a)   # 리스트 저장
    
for i in range(t):
    print(sorted(aa[i],reverse=True)[2]) # 행별로 내림차순 정렬 후 3번째 큰 값 출력

 

테스트 케이스 하나를 입력받을 때마다 배열에 리스트 하나씩이 추가된다.

최종적으로 입력이 완료된 배열을 뜯어보면 아래와 같다.

우리는 3번째로 큰 값을 출력해야 하는데,

for문을 활용해서 각 행을 정렬 후 뽑아와도 되겠지만 

조금 간단하게 짜고 싶어서 sorted를 활용하여 내림차순 정렬 결과를 뽑은 후

그대로 결과를 출력해주었다.

 

아주 기초적인 부분이지만! 배열의 첫 값은 주소가 0이므로

내림차순 정렬된 리스트에서 3번째로 큰 값을 찾고 싶다면 주소를 2로 지정해주어야 잘 뽑힌다.

끝~