코드노트

leetcode 35. Search Insert Position 문제 풀이 자바스크립트 본문

Code note/자바스크립트 알고리즘 문제풀이

leetcode 35. Search Insert Position 문제 풀이 자바스크립트

코드노트 2022. 9. 21. 16:00

 

더보기

문제 설명

고유한 정수의 정렬된 배열과 대상 값이 주어지면 대상이 발견되면 인덱스를 반환합니다.

그렇지 않은 경우 순서대로 삽입된 경우 인덱스를 반환합니다.

런타임 복잡도가 O(log n)인 알고리즘을 작성해야 합니다.

 

 

// Example 1:
Input: nums = [1,3,5,6], target = 5
Output: 2

// Example 2:
Input: nums = [1,3,5,6], target = 2
Output: 1

// Example 3:
Input: nums = [1,3,5,6], target = 7
Output: 4

역시나 leetcode문제는 문제를 잘 살펴봐야하는거 같다...

처음 문제만 보고 배열에 있는 요소를 확인해서 있으면 index를 반환하는줄 알았다..

문제를 왜 항상 제대로 안보고 감으로 풀려고할까..

이제 문제르르 풀기전 문제를 3번은 읽어보고 이해하고 풀어야겠다..ㅠㅠ

그 외에도 런타임 복잡도가 O(log n)인 알고리즘을 작성해한다.

 

 

문제 풀이

var searchInsert = function (nums, target) {
  let result = nums.indexOf(target);
  let false_index;
  if (result === -1) {
    nums.push(target);
    false_index = nums.sort((a, b) => a - b).indexOf(target);
    return false_index;
  } else {
    for (let i in nums) {
      if (nums[i] === target) {
        return i;
      }
    }
  }
};

- 처음에 indexOf를 통해서 target이 있는지 확인을 해주었다.

- target이 있지 않으면 push를 통해서 배열에 넣어주고 sort로 정렬 후 다시 indexOf로 index를 확인하여 반환하였다.

- target이 있으면 for in을 통해서 index를 반환했다.

 

- 코딩테스트 문제들을 풀때마다 느끼는거지만 되는것들을 정리하는것보다 안되는 것들을 먼저 정리하고 나면 그 뒤에는 코드짜기가 더 쉬운거 같다.