https://www.acmicpc.net/problem/2693


문제

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

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


입력

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


출력

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


예제 입력

4
1 2 3 4 5 6 7 8 9 1000
338 304 619 95 343 496 489 116 98 127
931 240 986 894 826 640 965 833 136 138
940 955 364 188 133 254 501 122 768 408


예제 출력

8
489
931
768


코드


👩‍💻 풀이과정

  • 총 입력받을 횟수 n에 저장
  • 각각의 줄을 저장할 array 배열과, 각 배열에서 3번째로 큰 수를 저장할 result 배열 정의
  • 총 횟수 n만큼 반복
    • 한 줄을 nextLine()으로 입력받고, StringTokenizer를 이용하여 공백 단위로 자름
      • 자른 문자열을 Integer.parseInt()로 Integer 타입으로 변환하여 array에 저장
    • Collections.sort()를 이용하여 오름차순 정렬
    • result 배열에 정렬된 array 배열의 뒤에서 3번째 원소 저장
    • array.clear()array 배열 초기화 -> 다음 줄 입력받아 저장
  • result 배열의 원소 한 개씩 출력


👀 주의할 점

  • String 타입 특정 문자열/공백 단위로 분리할 때는 StringTokenizer 이용
  • 배열 원소 모두 삭제는 clear() / removeAll()
    • clear()는 요소 모두 삭제
    • removeAll()은 Collection 타입의 인수가 존재하여, 호출한 Collection 객체와 인자로 전달된 객체와 일치하는 요소 제거
    • clear()가 더 빠름