서크호
서크호 - 개발 스토리
서크호
전체 방문자
오늘
어제
  • 분류 전체보기 (22)
    • TEAM 알고싶다 (17)
      • 성공 문제 (16)
      • 실패 문제 (1)
    • JavaScript (0)
    • TypeScript (0)
    • Node.js (2)
      • React.js (0)
      • Next.js (0)
      • NestJS (2)
    • Baekjoon (Node.Js) (1)
    • Error Box (1)
    • MySQL (1)
    • JAVA (0)
    • Andriod (0)
    • Spring Boot (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • NestJs login
  • 백준
  • Nest Typeormm
  • 백준 적록색약
  • NestJs Strategy
  • nodejs
  • 적록색약 javascript
  • NestJS ValidationPipe
  • NestJs PassPort
  • 10026 node
  • Nest mysql
  • Nest DB
  • javascript
  • NestJs session
  • 적록색약 nodejs
  • Nestjs
  • 10026

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
서크호

서크호 - 개발 스토리

TEAM 알고싶다/성공 문제

[LeetCode] 4. Median of Two Sorted Arrays (정렬된 두 배열의 중앙값)

2022. 6. 3. 00:26

📄 문제

- 두개의 정렬된 배열이 주어지고, 그 두 배열을 합쳐서 정렬하고 중앙 값을 구해라.

- 주의점 : 합쳐진 두 배열의 길이가 홀수라면 중앙 요소를 반환하면 되지만, 짝수면 중앙쯤에 두개의 요소를 더하고 반으로 나눠야 한다. (왜 ㅜㅜ)

 

문제 사진


📝 나의 풀이 - 처음 코드

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
    'TEAM 알고싶다/성공 문제' 카테고리의 다른 글
    • [프로그래머스] JavaScript - 오픈채팅방
    • [프로그래머스] JavaScript - 구명보트
    • [LeetCode] 34. Find First and Last Position of Element in Sorted Array (정렬된 배열에서 요소의 첫 번째 및 마지막 위치 찾기)
    • [프로그래머스] JavaScript - 평균 구하기
    서크호
    서크호
    팀 스터디 및 개인 개발 관련 블로그 입니다!

    티스토리툴바