728x90
문제
수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 5,000,000)과 K (1 ≤ K ≤ N)이 주어진다.
둘째에는 A1, A2, ..., AN이 주어진다. (-109 ≤ Ai ≤ 109)
출력
A를 정렬했을 때, 앞에서부터 K번째 있는 수를 출력한다.
2. 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// n, k 입력
String [] arr = br.readLine().split(" ");
// 참조형 변수로 전환
int n = Integer.parseInt(arr[0]);
int k = Integer.parseInt(arr[1]);
// ArrayList 선언
// collections.sort 사용 하기 위함
ArrayList<Integer> ans = new ArrayList<>();
// 수 입력
String [] nums = br.readLine().split(" ");
// ans 배열에 입력받은 수를 참조형 변수로 변환 한걸 넣기
for (int i = 0; i < n; i++) ans.add(Integer.parseInt(nums[i]));
// 정렬
Collections.sort(ans);
// 정답 출력
System.out.println(ans.get(k - 1));
}
}
3. 회고
Q. 문제를 보고 든 생각
-
- Tim sort()를 알고 난 이후 이 문제는 Tim sort()를 사용해야 겠다는 생각부터 들었다.
- Tim sort()를 쓰기 위해 ArrayList 만들고 입력 받은 수들을 int형으로 전환후 넣어주어야겠다는 생각를 했다.
- 정렬 이후 ArrayList에 있는 인덱스 값을 뽑아내기 위해서는 get를 사용해야 한다.
- get으로 해당 인덱스 값 도출!
4. 고쳐야 할점
자바는 라이브러리를 얼만큼 많이 알고 있는지에 따라 코드의 길이가 달라지는 것 같다.
728x90
'Algorithm > Java' 카테고리의 다른 글
백준 1786번 찾기 (0) | 2023.02.08 |
---|---|
백준 2178번 미로 탐색 (0) | 2023.02.07 |
[Java] 기본형 변수와 참조형 변수 (0) | 2023.01.29 |
선택 정렬 과 시간 복잡도 (0) | 2023.01.26 |
자바 [JAVA] - 삽입 정렬(Insertion Sort) (0) | 2023.01.23 |