문제
https://www.acmicpc.net/problem/11728
풀이
두 가지 방법으로 문제를 해결할 수 있었습니다. Arrays.sort 메서드를 통해 단순히 구현하는 법과 포인터를 이용하는 법입니다.
포인터를 이용할 때에는, 두 배열에 대해 0부터 시작하는 포인터를 하나씩 두고, 둘 중 하나라도 포인터가 끝에 도달하면 while문을 멈춥니다. 그리고 끝까지 도달한 배열이 아닌, 다른 배열의 값을 모두 append 해주었습니다.
아래는 소스 코드입니다.
소스 코드
1. pointer 이용
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
int[] A = new int[N];
int[] B = new int[M];
for(int i = 0;i<N;i++){
A[i] = sc.nextInt();
}
for(int i = 0;i<M;i++){
B[i] = sc.nextInt();
}
Arrays.sort(A);
Arrays.sort(B);
int pointA = 0;
int pointB = 0;
StringBuilder sb = new StringBuilder();
while(pointA<N&&pointB<M){
if(A[pointA]<=B[pointB]){
sb.append(A[pointA]+" ");
pointA++;
}
else if(A[pointA]>B[pointB]){
sb.append(B[pointB]+" ");
pointB++;
}
}
if(pointA==N){
while(pointB<M){
sb.append(B[pointB++]+" ");
}
}
if(pointB==M){
while(pointA<N){
sb.append(A[pointA++]+" ");
}
}
System.out.println(sb);
}
}
2. Arrays.sort 이용
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
int[] AB = new int[N+M];
for(int i = 0;i<N;i++){
AB[i] = sc.nextInt();
}
for(int i = N;i<N+M;i++){
AB[i] = sc.nextInt();
}
Arrays.sort(AB);
StringBuilder sb = new StringBuilder();
for(int i : AB){
sb.append(i+" ");
}
System.out.println(sb);
}
}
'Java > BOJ' 카테고리의 다른 글
[BOJ] 백준 14890. 경사로 (0) | 2024.05.27 |
---|---|
[BOJ] 백준 13335. 트럭 (1) | 2024.05.18 |
[BOJ] 백준 2828. 사과 담기 게임 (0) | 2024.05.14 |
[BOJ] 백준 14244. 트리 만들기 (0) | 2024.05.13 |
[BOJ] 백준 17073. 나무 위의 빗물 (0) | 2024.05.12 |