📄 문제
- 두개의 정렬된 배열이 주어지고, 그 두 배열을 합쳐서 정렬하고 중앙 값을 구해라.
- 주의점 : 합쳐진 두 배열의 길이가 홀수라면 중앙 요소를 반환하면 되지만, 짝수면 중앙쯤에 두개의 요소를 더하고 반으로 나눠야 한다. (왜 ㅜㅜ)
📝 나의 풀이 - 처음 코드
let findMedianSortedArrays = function (nums1, nums2) {
let newArr = nums1.concat(nums2).sort((a, b) => a - b);
let len = newArr.length;
if (len == 1) {
return newArr[0];
} else {
let center = Math.floor(len / 2);
if (len % 2 != 0) {
return newArr[center];
} else {
return (newArr[center - 1] + newArr[center]) / 2;
}
}
};
📝 나의 풀이 - 피드백 후 수정 코드
let findMedianSortedArrays = function (nums1, nums2) {
let newArr = nums1.concat(nums2).sort((a, b) => a - b);
let len = newArr.length;
let center = Math.floor(len / 2);
if (len % 2 != 0) {
return newArr[center];
} else {
return (newArr[center - 1] + newArr[center]) / 2;
}
};
⌨ 처음 접근법
1. 주어진 두개의 배열을 합치고 정렬한다 = newArr
2. 계속해서 사용할 배열의 길이 = newArr.length 를 변수로 만들어 계속 쓴다.
3. newArr 이 1개의 길이면 무조건 그 요소를 반환한다 (예외처리) => 없어도 되는 예외 상황
4. (3번에서의 조건이 아니라면) newArr의 중앙 인덱스를 먼저 구하고
5. newArr이 홀수면 = newArr[중앙] return,
6. newArr이 짝수면 = newArr[중앙 - 1] + newArr[중앙] / 2 로 return
⌨ 수정 사항
접근법의 3번 예외처리 라고 써있는 부분을 없애니 속도가 많이 좋아진 코드가 되었다!
처음부터 왜 배열의 길이가 1일때를 예외로 박아놓고 문제를 풀었는지 모르겠다 ㅋㅋㅋ
코드도 더 짧아지고 속도도 올라가니 기분이 이상하게 좋다. 감사합니다. @그린님
😂 아쉬운 점
- 이진 탐색 알고리즘을 사용하면 내가 만든 코드보다 훨씬 효율적이라 해서 개념을 보고 적용하려 했는데 맘처럼 잘 안됐다...
- 역시 알고리즘은 너무 어렵다. 주말 같이 시간 많은 날을 활용해서 기초 개념 및 활용을 연습해야 할 것 같다.
📚 문제 링크
https://leetcode.com/problems/median-of-two-sorted-arrays/
Median of Two Sorted Arrays - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
'TEAM 알고싶다 > 성공 문제' 카테고리의 다른 글
[LeetCode] 41. First Missing Positive (처음 누락된 양수?) (0) | 2022.06.13 |
---|---|
[프로그래머스] JavaScript - 오픈채팅방 (0) | 2022.06.09 |
[프로그래머스] JavaScript - 구명보트 (0) | 2022.06.06 |
[LeetCode] 34. Find First and Last Position of Element in Sorted Array (정렬된 배열에서 요소의 첫 번째 및 마지막 위치 찾기) (0) | 2022.06.01 |
[프로그래머스] JavaScript - 평균 구하기 (0) | 2022.05.30 |