Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- database
- array
- Matrix
- 코딩테스트
- Counting
- Method
- 코테
- simulation
- implement
- greedy
- Tree
- Binary Search
- bit manipulation
- Stack
- geometry
- 자바
- Math
- hash table
- sorting
- two pointers
- Number Theory
- Class
- 구현
- java
- string
- Binary Tree
- SQL
- 파이썬
- dynamic programming
- Data Structure
Archives
- Today
- Total
코린이의 소소한 공부노트
[백준 온라인 저지] 24060. 알고리즘 수업 - 병합 정렬 1 본문
1. 입력
- 첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 500,000), 저장 횟수 K(1 ≤ K ≤ 10^8)가 주어진다.
- 다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 10^9)
2. 출력
- 병합 정렬을 진행할 때 배열 A에 K 번째 저장 되는 수를 출력한다. 저장 횟수가 K 보다 작으면 -1을 출력한다.
3. 코드
import java.util.*;
import java.io.*;
class Main {
static int count = 0;
static int val = -1;
static int k;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer token = new StringTokenizer(br.readLine());
int n = Integer.valueOf(token.nextToken());
k = Integer.valueOf(token.nextToken());
int[] A = new int[n];
token = new StringTokenizer(br.readLine());
for(int i=0 ; i<n ; i++)
A[i] = Integer.valueOf(token.nextToken());
merge_sort(A, 0, n-1);
System.out.print(val);
}
static void merge_sort(int[] A, int p, int r){
if(p<r){
int q = (p+r)/2;
merge_sort(A, p, q);
merge_sort(A, q+1, r);
merge(A, p, q, r);
}
}
static void merge(int[] A, int p, int q, int r){
int i = p, j = q+1, t = 0;
int[] tmp = new int[r-p+1];
while(i<=q && j<=r){
if(A[i]<=A[j])
tmp[t++] = A[i++];
else
tmp[t++] = A[j++];
}
while(i<=q)
tmp[t++] = A[i++];
while(j<=r)
tmp[t++] = A[j++];
i = p; t = 0;
while(i<=r){
A[i++] = tmp[t];
count++;
if(count==k)
val = tmp[t];
t++;
}
}
}
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[LeetCode/Easy] 1796. Second Largest Digit in a String (0) | 2023.04.21 |
---|---|
[LeetCode/Easy] 1790. Check if One String Swap Can Make Strings Equal (0) | 2023.04.21 |
[백준 온라인 저지] 25501. 재귀의 귀재 (0) | 2023.04.20 |
[백준 온라인 저지] 10870. 피보나치 수 5 (0) | 2023.04.20 |
[백준 온라인 저지] 27433. 팩토리얼 2 (0) | 2023.04.20 |