본문 바로가기
공부 정리/백준

[백준] 자바 2693 N번째 큰 수

by 경적필패. 2021. 9. 24.
반응형

문제

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

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

입력

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

출력

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


테스트 케이스

 

입력 1

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

출력 1

8
489
931
768

 

 


접근

 

1. 테스트 케이스 숫자를 입력받습니다.

2. 숫자 10개를 입력받습니다.

3. 숫자 10개 중 3번째로 큰 수를 출력합니다.

 

저는 ArrayList를 이용해서 정렬해준 후, 8번째 값을 출력했습니다.

그렇게 했더니 문제가 해결되었습니다.


코드

import java.awt.desktop.SystemEventListener;
import java.io.*;
import java.math.*;
import java.util.*;

public class Main {

	/*
 	 2693 problem
	*/
	public static void main(String[] args) throws NumberFormatException, IOException {
		// TODO Auto-generated method stub
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int tc = Integer.parseInt(br.readLine());
		ArrayList<Integer> list = new ArrayList<>();
		
		for(int i=0; i<tc; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			
			for(int j=0; j<10; j++) {
				list.add(Integer.parseInt(st.nextToken()));
			}
			Collections.sort(list);
			bw.write(String.valueOf(list.get(7)+"\n"));
			list.clear();
		}
		
		
		bw.flush();
		br.close();
		bw.close();
	}
}

주의

 

 

반응형

댓글