inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)

정렬 - 병합정렬

GPT Plus 코드입니다.

573

ehrbs2018
0

원본배열 유지하고 새 배열 반환하도록 리팩토링한 GPT 코드입니다. 주석 달아달라니까 주석까지 친절하게 달아주네요ㅋㅋ 세상참 편해졌네요.

GPT로 코테보는 사람도 있어서 그거 방지하려고 캠이랑 실시간으로 하는 경우도 있더라구요...

 

function mergeSort(arr, leftIndex, rightIndex) {
  // 기저 사례: 하나의 요소만 있는 경우, 그 요소를 배열로 반환
  if (leftIndex >= rightIndex) {
    return [arr[leftIndex]]
  }

  // 중간 지점 계산
  let midIndex = parseInt((leftIndex + rightIndex) / 2)

  // 배열을 두 부분으로 나누어 각각을 재귀적으로 정렬
  let leftArr = mergeSort(arr, leftIndex, midIndex)
  let rightArr = mergeSort(arr, midIndex + 1, rightIndex)

  // 병합된 배열 반환
  return merge(leftArr, rightArr)
}

function merge(leftArr, rightArr) {
  let result = []; // 병합된 요소를 저장할 배열
  let leftIndex = 0, rightIndex = 0; // 각 배열의 인덱스

  // 두 배열 중 하나가 완전히 순회될 때까지 반복
  while (leftIndex < leftArr.length && rightIndex < rightArr.length) {
    // leftArr의 현재 요소와 rightArr의 현재 요소를 비교
    if (leftArr[leftIndex] < rightArr[rightIndex]) {
      // leftArr의 요소가 더 작은 경우, 결과 배열에 추가하고 leftArr의 인덱스 증가
      result.push(leftArr[leftIndex]);
      leftIndex++;
    } else {
      // rightArr의 요소가 더 작거나 같은 경우, 결과 배열에 추가하고 rightArr의 인덱스 증가
      result.push(rightArr[rightIndex]);
      rightIndex++;
    }
  }

  // 남은 요소들을 결과 배열에 추가
  // leftArr 또는 rightArr 중 하나가 이미 완전히 순회된 후, 나머지 배열의 남은 요소들을 결과 배열에 추가
  return result.concat(leftArr.slice(leftIndex)).concat(rightArr.slice(rightIndex));
}

알고리즘

답변 1

0

감자

와우 엄청 편하네요 ㅎㅎ

AI덕에 개발자가 많이 편해지는 것 같습니다

백준 서비스 종료

0

313

1

강의에 나오는 알고리즘이 코테에 많이 나오는건가요?

0

368

0

[질문] 삼성 SW 역량테스트 D-5, 효과적인 학습 커리큘럼 추천 부탁드립니다

0

379

1

독하게 시작하는 C 프로그래밍 완강 후, 자료구조·알고리즘 학습 방향과 언어 선택에 대한 고민

0

368

0

코딩테스트 언어관련

0

422

0

공부 방법 관련.

0

404

0

코딩테스트 준비

0

482

1

알고리즘 과 실전문제풀이

0

433

1

노션링크 공유

0

404

1

1-11 숙제를 진행하던 중

0

385

1

노션 출력

0

441

1

앞으로의 강좌 일정에 대해

0

350

1