undefined
[백준] 11728 배열 합치기 - Node/Js 본문
반응형
문제 설명
11728번: 배열 합치기
첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거
www.acmicpc.net
문제 풀이
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
let N = 0;
let count = 0;
rl.on('line', function (line) {
if (!count) {
N = line
.split(' ')
.map((e) => +e)
.reduce((a, c) => a + c);
} else input.push(line.split(' ').map((e) => +e));
count++;
}).on('close', function () {
solution(input);
process.exit();
});
const solution = (input) => {
// 배열 디스트럭팅 arr1 arr2
let [arr1, arr2] = input;
// 포인터 i와 j 정의
let i = 0;
let j = 0;
// answer 배열정의
let answer = [];
// N만큼 for루프 (N은 두 배열의 길이의 합)
for (let k = 0; k < N; k++) {
// 만약 arr1[i] || arr2[j]의 값이 false 일때 j가 아직 도달 하지 않았다면 arr2에 계속 푸시 j가 도달한 상태면 arr1에 푸시
if (i === arr1.length || j === arr2.length) {
j !== arr2.length ? answer.push(arr2[j++]) : answer.push(arr1[i++]);
// 둘다 도달하지 않았을 때
} else {
// 만약 arr1[i] >= arr2[j] answer에 arr2[j++] 푸시 (같을 경우 어디서 넣어주나 상관 없음)
if (arr1[i] >= arr2[j]) {
answer.push(arr2[j++]);
// 만약 arr1[i] < arr2[j] answer에 arr1[i++] 푸시
} else {
answer.push(arr1[i++]);
}
}
}
// answer리턴
console.log(answer.join(' '));
};
시간복잡도 : O(n)
공간복잡도 : O(n)
배운 점
투포인터를 써보았다.
반응형
'Coding Test' 카테고리의 다른 글
[백준] 2559 수열 - Node/js (0) | 2022.07.29 |
---|---|
[백준] 3273 두 수의 합 - Node/Js (0) | 2022.07.29 |
[프로그래머스] JadenCase - 자바스크립트 (0) | 2022.07.13 |
[프로그래머스] 다리를 지나는 트럭 -자바스크립트 (0) | 2022.07.12 |
[프로그래머스] 가장 큰 수 -JS (0) | 2022.07.09 |
Comments