[코딩 테스트] 1. Two sum

김수연·2022년 9월 10일
0
post-thumbnail

1. Two sum 문제

문제 해석

  1. 배열 중 두개의 요소의 합이 target 값과 같은 경우 두 요소의 인덱스를 가진 배열을 반환

  2. 반드시 한 개의 해만 존재

  3. 배열의 요소는 한 번만 사용 가능

  4. 요소의 순서는 상관 없음 [2,1], [1,2] 상관 없음

1. 내가 푼 방식 : for 반복문

Two sum : for 반복문

  • 이중 반복문 이용
  • 조합 개념을 이용해서 요소를 두번 중복 없이 뽑음
  • 뽑은 요소의 합이 target과 같은지 확인 후 배열 리턴

🚨 문제점

  • 이중 반복문으로 big O (n2) 효율성이 떨어짐

2. object를 이용

Two sum: object

  • target=9, nums=[3,2,4,0,5], 원하는 답 = [2,4]

  • nums배열에서 요소의 값을 키로 요소의 인덱스를 값으로 갖는 map object선언

  • map은 빈 객체라서 값을 저장하기 전까지는 조건을 만족할 수 없음

  • map에 nums[i]가 우선 저장됨

  • nums[i]를 another로 갖는 두번째 요소가 나타나면 조건문이 실행되면서 두 요소의 인덱스를 반환

  • 인덱스를 반환하는 것 = map에는 첫 인덱스부터 조건을 만족하는 요소 전까지는 순서대로 저장이 되어 있어야 nums와 똑같은 인덱스를 출력 가능

  • 두번째로 만족하는 요소는 map에 저장하지 않고 바로 i로 인덱스를 출력

조건을 만족하는 두쌍의 요소가 없다면 map에 nums요소가 계속 저장되기만 할 것.
만족하는 두번째 요소가 등장할 때 이미 저장되어있던 첫번째 요소의 인덱스와 현재 인덱스가 리턴되는 방식이다.

3. new Map()

Two sum: new Map()

  • obj와 비슷하지만 map객체를 선언해 리터러블 객체를 받음
  • map.set 메서드를 이용해서 map에 값을 저장
  • null 대신 빈 배열을 반환
profile
길을 찾고 싶은 코린이 of 코린이

0개의 댓글