문제
문제 탐색하기
- N : 학생 수 (1 ≤ N ≤ 100)
- K : 상을 받는 사람의 수 (1 ≤ K ≤ N)
- 입력 : N, K 그리고 학생들의 점수 N개
- 출력 : 상을 받는 사람 중 점수가 가장 낮은 사람의 점수
가능한 시간복잡도
입력 범위 (1 ≤ N ≤ 100)
1. 입력 받기 : 입력받은 학생 점수 정보를 배열에 저장할 때 O(N)의 시간 복잡도를 가짐
2. 정렬 : Arrays.sort() 를 사용하는 경우 O(NlogN)의 시간 복잡도를 가진다
3. 최종적으로 최악의 경우 시간 복잡도는 O(NlogN)
코드 설계하기
- 학생 수 N과 상을 받는 사람 수 K를 입력받는다.
- 내장 함수로 배열을 정렬해준다. (오름차순 정렬)
- 상을 받는 사람 중 점수가 가장 낮은 사람의 점수를 출력한다.
풀이 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] arr = br.readLine().split(" ");
int n = Integer.parseInt(arr[0]); // 학생 수 N
int k = Integer.parseInt(arr[1]); // 상을 받는 사람 수
int[] intArr = new int[n]; // 학생들의 점수를 담을 배열
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i=0;i<n;i++) {
intArr[i] = Integer.parseInt(st.nextToken());
}
// 배열 정렬 (오름차순)
Arrays.sort(intArr);
// 커트라인 출력
System.out.println(intArr[n-k]);
}
}
'코딩테스트' 카테고리의 다른 글
[백준] 7568번 : 덩치 자바(JAVA) 풀이 (2) | 2024.09.15 |
---|---|
[백준] 2947번 : 나무 조각 자바(JAVA) 풀이 (1) | 2024.09.14 |
[백준] 5635번 : 생일 자바(JAVA) 풀이 (0) | 2024.09.12 |
[백준] 1181번 : 단어 정렬 자바(JAVA) 풀이 (0) | 2024.09.11 |
[백준] 10814번 : 나이순 정렬 자바(JAVA) 풀이 (0) | 2024.09.10 |