[오늘의 코테 연습장] [LeetCode] 88. Merge Sorted Array

Mini_me·2023년 8월 24일
0

공부[코테연습장]

목록 보기
13/36
post-thumbnail

🔖 문제

두 개의 정수 배열 nums1과 nums2가 주어지며, 이 배열들은 비내림차순으로 정렬되어 있습니다. 또한 두 정수 m 과 n 이 주어지는데, 이들은 각각 nums1과 nums2의 원소 개수를 나타냅니다.

nums1과 nums2 배열을 합쳐 하나의 오름차순으로 정렬된 배열을 만드세요.

최종 정렬된 배열은 함수에서 반환될 필요는 없으며, 대신 nums1 배열 내에 저장되어야 합니다.

  • nums1 배열의 길이는 m + n이며, 여기서 처음 m개의 원소는 병합해야 하는 원소들이고, 마지막 n개의 원소는 0으로 설정되어 무시되어야 합니다.
  • nums2 배열의 길이는 n입니다.

🔖접근 방식

이 문제를 해결하려면, 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));

    } 
    }

0개의 댓글

관련 채용 정보