🔖 문제
두 개의 정수 배열 nums1과 nums2가 주어지며, 이 배열들은 비내림차순으로 정렬되어 있습니다. 또한 두 정수 m 과 n 이 주어지는데, 이들은 각각 nums1과 nums2의 원소 개수를 나타냅니다.
nums1과 nums2 배열을 합쳐 하나의 오름차순으로 정렬된 배열을 만드세요.
최종 정렬된 배열은 함수에서 반환될 필요는 없으며, 대신 nums1 배열 내에 저장되어야 합니다.
🔖접근 방식
이 문제를 해결하려면, nums1과 nums2 배열을 병합한 후 정렬해야 합니다. 따라서 다음과 같은 전략을 사용하여 문제를 접근할 수 있습니다.
1. 주어진 두 배열인 nums1과 nums2를 각각 리스트로 변환합니다.
2.listOfNum1에서 값이 0인 모든 요소들을 제거합니다.
3. listOfNum1에 listOfNum2 요소들을 add한다.
4. list -> array로 변환하여 다시 nums1에 저장합니다.
5. 오름차순으로 정렬합니다.
🔖문제 풀이 코드
import java.util.*;
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
//n1의 0인 요소들을 삭제하기 전 list로 변환
List<Integer> listOfnum1 = new ArrayList<>();
List<Integer> listOfnum2 = new ArrayList<>();
for (int i = 0; i < m; i++) {
listOfnum1.add(nums1[i]);
}
for (int i = 0; i < n; i++) {
listOfnum2.add(nums2[i]);
}
if(n!=0){
// n1의 0인 요소들을 삭제
for (int i = 0; i < listOfnum1.size(); i++) {
if (listOfnum1.get(i)==0) {
listOfnum1.remove(i);
}
}
}
// n1에 n2의 요소들을 붙임
for (int i = 0; i < listOfnum2.size(); i++) {
listOfnum1.add(listOfnum2.get(i));
}
// list -> array로 변환하여 nums1에 저장
for (int i = 0; i < listOfnum1.size(); i++) {
nums1[i] = listOfnum1.get(i);
}
// 오름차순으로 정렬
Arrays.sort(nums1);
System.out.println(Arrays.toString(nums1));
}
}