본문 바로가기
Coding Test/JavaScript

[Javascript] (백준 11728) 배열 합치기

by Chaedie 2022. 6. 25.
728x90

[Javascript] (백준 11728) 배열 합치기

💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.

내 풀이 (2 포인터)

//* 인풋 (디폴트)
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = require('fs').readFileSync(filePath).toString().split('\n');

//* 인풋 (커스텀)
const n = +input[0][0];
const m = +input[0][1];
const numsA = input[1].split(' ').map((num) => +num);
const numsB = input[2].split(' ').map((num) => +num);

//* 함수 콜 (고정)
const answer = solution(numsA, numsB);
console.log(answer.trim());

//* 로직함수
function solution(numsA, numsB) {
  let p1 = 0;
  let p2 = 0;
  let result = [];
  while (p1 <= numsA.length || p2 <= numsB.length) {
    if (p1 >= numsA.length && p2 >= numsB.length) {
      break;
    }
    if (p1 >= numsA.length) {
      result.push(numsB[p2]);
      p2++;
      continue;
    }
    if (p2 >= numsB.length) {
      result.push(numsA[p1]);
      p1++;
      continue;
    }

    if (numsA[p1] < numsB[p2]) {
      result.push(numsA[p1]);
      p1++;
    } else {
      result.push(numsB[p2]);
      p2++;
    }
  }
  return result.join(' ');
}

내 풀이 2 (JS 메서드 이용)

//* 인풋 (디폴트)
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = require('fs').readFileSync(filePath).toString().split('\n');

//* 인풋 (커스텀)
const n = +input[0][0];
const m = +input[0][1];
const numsA = input[1].split(' ').map((num) => +num);
const numsB = input[2].split(' ').map((num) => +num);

//* 함수 콜 (고정)
const answer = solution(numsA, numsB);
console.log(answer.trim());

//* 로직함수
function solution(numsA, numsB) {
  let result = [];
  result.push(...numsA);
  result.push(...numsB);
  return result.sort((a, b) => a - b).join(' ');
}

배운 점, 느낀 점

array.push() 안에 여러 원소를 한꺼번에 푸시 할 수 있다.

여기에 Destucturing으로 더 편하게 넣을수 있다.

댓글