List를 이용한 정답 풀이.
각 리스트는 정렬되어 있음.
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//input
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt(); // 배열 A의 사이즈
int M = scanner.nextInt(); // 배열 B의 사이즈
List<Integer> A = new ArrayList<>();
for(int i = 0; i< N; i++){
int n = scanner.nextInt();
A.add(n);
}
List<Integer> B = new ArrayList<>();
for(int i = 0; i < M; i++){
int n = scanner.nextInt();
B.add(n);
}
//logic
List<Integer> result = new ArrayList<>();
int i = 0, j= 0; // 배열 A의 인덱스, 배열 B의 인덱스
while(i < N && j < M){
int a = A.get(i);
int b = B.get(j);
if(a<= b){
result.add(a);
i++;
} else {
result.add(b);
j++;
}
}
//인덱스가 남아있는 경우도 고려
for(; i<N; i++){
result.add(A.get(i));
}
for(; j<M; j++){
result.add(B.get(j));
}
//output
StringBuilder sb = new StringBuilder();
for(int e : result){
sb.append(e + " ");
}
System.out.println(sb.toString());
}
}
이전에 풀었던 기록(시간 초과)
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int arrayA = sc.nextInt();
int arrayB = sc.nextInt();
int [] answer = new int [arrayA + arrayB];
for(int i = 0; i< arrayA; i++) {
answer[i] = sc.nextInt();
}
for(int i = arrayA; i< (arrayA + arrayB); i++) {
answer[i] = sc.nextInt();
}
Arrays.sort(answer);
for(int x : answer) {
System.out.print(x+ " ");
}
}
}
반응형
'(문제풀이)' 카테고리의 다른 글
백준 2164_카드2 (0) | 2023.06.06 |
---|---|
백준 9012_괄호 (0) | 2023.06.05 |
프로그래머스(java) : 음양 더하기 (0) | 2022.11.15 |
프로그래머스 (Oracle) LV.1 문제풀이 (0) | 2022.10.20 |
프로그래머스 (java) : 약수의 개수와 덧셈 (0) | 2022.10.19 |