CODE KATA #28
두 배열 합치기
오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐 출력하는 프로그램 을 작성하세요.
▣ 입력설명
첫 번째 줄에 첫 번째 배열의 크기 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
변수를 추가해주었을 뿐인데 훨씬 더 가독성이 좋은 코드를 짤 수 있다는 점을 느꼈다. 참고하여 코드를 작성하자.
Author And Source
이 문제에 관하여(CODE KATA #28), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@loopbackseal/CODE-KATA-28저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)