Contents
https://www.acmicpc.net/problem/11728
배열 두개를 입력받아서 합친 후 정렬하는 문제다.
첨 봤을 땐 되게 쉬워보였다. 근데 시간초과가 계속 나와서 애먹었다.;;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;
// 백준 배열 찹치기
// 배열 a 의 크기 n, 배열 b의 크기 m이 주어진다.
// 둘째 줄에는 배열 a의 내용이 셋째 줄에는 배열 b의 내용
// 두 배열을 합쳐서 정렬한 후 출력
public class Main {
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 st = new StringTokenizer(br.readLine());
// 배열 a의 크기, b의 크기
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
// 합치기 싫으니까 하나로 합침
int[] a = new int[n + m];
// a의 값 입력
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
a[i] = Integer.parseInt(st.nextToken());
}
// b의 값 입력
st = new StringTokenizer(br.readLine());
for (int i = n; i < n + m; i++) {
a[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(a);
StringBuilder sb = new StringBuilder();
for (int i : a) {
sb.append(i + " ");
}
// sysout보다 빠름
bw.write(sb.toString());
bw.close();
}
}
시간을 줄여보려고 이거저거 여러가지 해봤다
System.out.println()은 시간이 오래걸려서 BufferedWriter도 처음 써봤다. 이건 나중에 포스팅해보겠다.
어차피 합칠 배열 그냥 하나만 만들었다.
n + m 크기로 만들고 첫번째 입력값은 0 ~ n까지
두번째 입력값은 n ~ m까지 넣었다.
정렬 후에 빠른 출력을 위해 StringBuilder를 사용했다.
각 정렬과 공백을 StringBuilder에 넣어주고 BufferedWriter를 이용해 출력한다.
마지막 배열은 알아서 생락된다.
'백준' 카테고리의 다른 글
[백준] 날짜 계산 (JAVA) (1) | 2025.02.05 |
---|---|
[백준] 비밀번호 찾기 (JAVA) (2) | 2025.02.05 |
[백준] 문자열 집합 (JAVA) (0) | 2025.02.03 |
[백준] 이친수 (JAVA) (3) | 2025.02.03 |
[백준] 방 번호 (JAVA) (1) | 2025.02.01 |