두 대기열 번갈아 합치기

자바스크립트 코딩테스트 문제로 array-interleaving 주제를 연습해보세요. 난이도는 easy이며, 브라우저에서 바로 JavaScript로 풀이를 실행할 수 있습니다.

today easy array-interleaving 함수명: mergeAlternatingQueues 제한 시간: 200ms

문제 설명

두 개의 대기열 first, second가 배열로 주어집니다.

첫 번째 대기열에서 한 명, 두 번째 대기열에서 한 명을 번갈아 꺼낸 순서로 새 배열을 만드는 mergeAlternatingQueues 함수를 작성하세요.

어느 한쪽 대기열이 먼저 비면, 다른 대기열에 남아 있는 값은 기존 순서 그대로 뒤에 이어 붙입니다.

제한사항

  • 0 <= first.length <= 100000
  • 0 <= second.length <= 100000
  • firstsecond의 각 원소는 길이 1 이상 20 이하의 문자열입니다.
  • 반환값은 두 배열의 원소를 번갈아 합친 새 배열입니다.
  • 원본 배열의 순서는 바꾸지 않습니다.

예시

  • 입력: first = ["A", "B"], second = ["1", "2", "3"] -> 출력: ["A", "1", "B", "2", "3"]
  • 입력: first = [], second = ["Solo"] -> 출력: ["Solo"]
  • 입력: first = ["A"], second = [] -> 출력: ["A"]
  • 입력: first = ["A", "B", "C"], second = ["x"] -> 출력: ["A", "x", "B", "C"]

힌트

  • 두 배열 중 더 긴 길이만큼 반복하면 됩니다.
  • 현재 인덱스에 first[i]가 있으면 먼저 넣고, second[i]가 있으면 그다음 넣어 보세요.
  • 빈 배열이 들어와도 같은 방식으로 처리할 수 있습니다.

해설

이 문제는 두 배열을 같은 인덱스 기준으로 보면서 결과 배열에 차례로 추가하는 구현 문제입니다.

예를 들어 first = ["A", "B"], second = ["1", "2", "3"]이면 다음 순서로 결과가 만들어집니다.

  1. first[0]"A"를 넣습니다.
  2. second[0]"1"을 넣습니다.
  3. first[1]"B"를 넣습니다.
  4. second[1]"2"를 넣습니다.
  5. first[2]는 없고 second[2]"3"만 있으므로 "3"을 넣습니다.

따라서 결과는 ["A", "1", "B", "2", "3"]입니다.

풀이 순서는 다음과 같습니다.

  1. 빈 배열 result를 준비합니다.
  2. Math.max(first.length, second.length)로 반복할 길이를 정합니다.
  3. 각 인덱스 i마다 i < first.length이면 first[i]를 추가합니다.
  4. 이어서 i < second.length이면 second[i]를 추가합니다.
  5. 반복이 끝나면 result를 반환합니다.

두 배열의 모든 원소를 한 번씩만 확인하므로 시간 복잡도는 O(n + m)입니다.

코드 작성

starter code를 바탕으로 함수를 완성한 뒤 예제 테스트를 실행해보세요.

JavaScript 에디터 로딩 중...

커스텀 테스트

함수 인자를 JSON 배열 형태로 입력하세요. 예: [3, 5], [[1, 2, 3]]

아직 실행하지 않았습니다.

실행 결과

아직 실행하지 않았습니다.

예제 테스트를 실행하면 여기에서 결과를 확인할 수 있습니다.

댓글

문제 풀이 아이디어, 질문, 반례를 자유롭게 나눠보세요.