초보 개발자의 일기

두 배열 합치기 본문

코딩테스트/JS 알고리즘 문제(JS)

두 배열 합치기

판다꼬마 2023. 1. 10. 23:00
728x90

문제

 

 

입력

  • 첫 번째 줄에 첫 번째 배열의 크기 N
  • 두 번째 줄에 N개의 배열 원소가 오름차순
  • 세 번째 줄에 두 번째 배열의 크기 M
  • 네 번째 줄에 M개의 배열 원소가 오름차순

 

 

출력

오름차순으로 정렬된 배열을 출력합니다.

 

입력 예시

3
1 3 5
5
2 3 6 7 9

출력 예시

1 2 3 3 5 6 7 9

풀이 방법

두 배열을 입력받은 후 

배열의 길이 만큼 for문을 돌려 새로운 배열에 push해 배열을 만든다

그 후 새로 만들어진 배열을 sort로 오름차순 정렬을 한다.

내 코드

<html>
<head>
    <meta charset="UTF-8">
    <title>출력결과</title>
</head>
<body>
<script>
    const sol =(a,b)=>{
        console.log(a,b);
        let result=[];
        for (let i=0; i<a.length; i++){
            result.push(a[i]);
        }
        for (let j=0; j<b.length; j++){
            result.push(b[j]);
        }

        let answer=Array.from(result).sort((a,b)=>a-b);
        console.log(answer);
    }


    let a=[1, 3, 5];
    let b=[2, 3, 6, 7, 9];
    console.log(sol(a, b));
</script>
</body>
</html>

Solution

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(arr1, arr2){
                let answer=[];
                let n=arr1.length;
                let m=arr2.length;
                let p1=p2=0;
                while(p1<n && p2<m){
                    if(arr1[p1]<=arr2[p2]) answer.push(arr1[p1++]);
                    else answer.push(arr2[p2++]);
                }
                while(p1<n) answer.push(arr1[p1++]);
                while(p2<m) answer.push(arr2[p2++]); 
                return answer;
            }
            
            let a=[1, 3, 5];
            let b=[2, 3, 6, 7, 9];
            console.log(solution(a, b));
        </script>
    </body>
</html>

느낌점

전에 배운 sort 오름차순 정렬을 알고 나니 쉬운 문제였다.

728x90

'코딩테스트 > JS 알고리즘 문제(JS)' 카테고리의 다른 글

연속 부분수열2  (0) 2023.01.13
연속 부분수열 1  (0) 2023.01.11
K번째 큰 수  (0) 2023.01.09
멘토링  (0) 2023.01.08
뒤집은 소수  (1) 2023.01.07