CODE KATA #28

14920 단어 TILTIL

두 배열 합치기

오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐 출력하는 프로그램 을 작성하세요.
▣ 입력설명
첫 번째 줄에 첫 번째 배열의 크기 N(1<=N<=100)이 주어집니다. 두 번째 줄에 N개의 배열 원소가 오름차순으로 주어집니다.
세 번째 줄에 두 번째 배열의 크기 M(1<=M<=100)이 주어집니다. 네 번째 줄에 M개의 배열 원소가 오름차순으로 주어집니다.
각 리스트의 원소는 int형 변수의 크기를 넘지 않습니다.

나의 풀이

            function solution(arr1, arr2){
                let answer=[];
                let m = arr1.length;
                let n = arr2.length;
                if (m>n) {
                    for (let i = 0; i<m; i++) {
                        if(i<n) {
                            if (arr1[i] < arr2[i]) {
                                answer.push(arr1[i]);
                                answer.push(arr2[i]);
                            } else {
                                answer.push(arr2[i]);
                                answer.push(arr1[i]);
                            }
                        } else {
                            answer.push(arr1[i]);
                        }
                    }
                } else {
                    for (let i = 0; i<n; i++) {
                        if(i<m) {
                            if (arr1[i] < arr2[i]) {
                                answer.push(arr1[i]);
                                answer.push(arr2[i]);
                            } else {
                                answer.push(arr2[i]);
                                answer.push(arr1[i]);
                            }
                        } else {
                            answer.push(arr2[i]);
                        }
                    }
                }
                return answer;
            }
            
            let a=[1, 3, 5];
            let b=[2, 3, 6, 7, 9];
            console.log(solution(a, b));

정답 풀이

            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));

느낀 점

정답 풀이나의 풀이에 비해 훨씬 더 짧고 보기 좋았다. p1,p2 변수를 추가해주었을 뿐인데 훨씬 더 가독성이 좋은 코드를 짤 수 있다는 점을 느꼈다. 참고하여 코드를 작성하자.

좋은 웹페이지 즐겨찾기