Search
Duplicate

51번 (1)

문제
승표의 코드
JavaScript
복사
나경의 코드
function mergeSort(arr){ // 3. array를 파라미터로 받음 if (arr.length <= 1){ // if문으로 배열의 길이가 1보다 작거나 같으면 반환하는 조건 return arr; } const mid = Math.floor(arr.length / 2); // 4. merge sort는 배열을 균등하게 나누기 때문에 기준이 되는 mid 설정 const left = arr.slice(0,mid); // 왼쪽배열, 0부터 mid - 1까지 const right = arr.slice(mid); // 오른쪽배열, mid부터 끝까지 return merge(mergeSort(left), mergeSort(right)); // if문에 들어가지 않았다면 아직 길이가 2이상이기 때문에 재귀로 다시 돌림 } function merge(left, right){ // 5. mergeSort에서 왼쪽배열, 오른쪽배열로 나눠준 것을 매개변수로 받음 let result = []; // merge sort는 새로운 리스트를 필요로한다 의 그 새로운 리스트 while (left.length && right.length){ // 6. 아직까지 크기 비교하는 부분이 없네? 그럼 merge가 비교하는 함수구나, 파라미터로 들어온 건 써야지 if (left[0] < right[0]){ // 정렬이 완료된 리스트를 합병하는 로직 : 2개의 리스트의 값들을 처음부터 하나씩 비교하여 result.push(left.shift()); // 두 개의 리스트의 값 중에서 더 작은 값을 새로운 리스트(sorted)로 옮긴다. } else { result.push(right.shift()); } } while (left.length) { result.push(left.shift()); } while (right.length) { result.push(right.shift()); } return result; } const array = prompt('배열을 입력하세요').split('').map(n => parseInt(n, 10)); // 1. 문자열로 받은 것을 map으로 돌면서 정수화 (split 수정) console.log(mergeSort(array)); // 2. mergeSort함수에 array를 아규먼트로 전달
JavaScript
복사
수지의 코드
function mergeSort(arr){ if (arr.length <= 1){ // 만약 인자 arr의 길이가 1보다 작거나 같다면 arr리턴 return arr; } const mid = Math.floor(arr.length / 2); // arr길이를 반으로 줄임 const left = arr.slice(0,mid); // arr 뒤를 반정도 자른다 const right = arr.slice(mid); // arr 앞을 반정도 자름 return merge(mergeSort(left), mergeSort(right)); } function merge(left, right){ let result = []; while ( left.length && right.length){ if (left[0] <= right[0]){ result.push(left.shift()); // shift() : 배열에서 첫번째 요소제거, 제거된 요소 반환. // => 제거된 요소를 Result 끝에 추가 } else { result.push(right.shift()); } } while (left.length) { // result = left.slice(mid); result.push(left.shift()) } while (right.length) { // result = right.slice(mid); result.push(right.shift()) } return result; } const array = prompt('배열을 입력하세요').split(' ').map(n => parseInt(n, 10)); console.log(mergeSort(array));
JavaScript
복사
답안지