[LeetCode/CodeWars] - Two Sum [JS]

2023. 2. 21. 18:25·알고리즘(Algorithm)
728x90
반응형

난이도

LeetCode => easy

CodeWars => 6kyu

1) 문제를 읽고 바로 떠올릴 수 있는 풀이

2개의 반복문으로 값들을 더하면서 target이 되는 값들의 index를 return해준다.

function twoSum(numbers, target) {
  for (let i = 0; i < numbers.length-1; i++) {
      for (let j = i+1; j < numbers.length; j++) {
          if (numbers[i] + numbers[j] === target) return [i, j];
      }
  }
}

 

2)자바스크립트가 가지고 있는 indexOf를 사용해서도 풀이가 가능하다

function twoSum(numbers, target) {
  for (i = 0; i < numbers.length; i++) {
    second = numbers.indexOf(target - numbers[i], i+1);
    if (second > i) {
      return [i, second];
    }
  }
}

i+1을 해주는 이유 : 다음 index부터 시작하게 하려고

ex) twoSum([123,345,120],465)

i) target - numbers[0] = 465-123 = 342이고 numbers.indexOf(342,1)의 결과값은 -1로 나온다.

ii) 465-345 = 120 numbers.indexOf(120,2) 결과값 2 이때 i는 1

 

3) 마지막 풀이 object를 사용하는 풀이

function twoSum(numbers, target) {
  let num={}
  for(let i=0;i<numbers.length;i++){
    if(num[target-numbers[i]]!==undefined) return [num[target-numbers[i]],i]
    else num[numbers[i]]=i
  }
}

indexOf풀이의 원리랑 똑같다

처음 코드를 보면 이해하기 힘든 부분이 if 다음에 return이 바로 나오는 부분일 것이다.

우선 else부분은 : num이라는 obj에 numbers의 값을 key로 index를 value로 저장하는 것을 알았을 것이다.

ex) twoSum([123,345,120],465)

else이후에 num에는 {'123':0,'345':1} 이렇게 저장될 것이다. (i=0,1)

i가 2일때 num[465-120=345] -> return [num[345]=1,2] => [1,2]

728x90
반응형
저작자표시 (새창열림)

'알고리즘(Algorithm)' 카테고리의 다른 글

[LeetCode] 1011.Capacity To Ship Packages Within D Days [JS]  (0) 2024.10.24
[CodeWars] Give me a Diamond [JS / 6kyu] 다이아 찍기  (0) 2023.02.16
프로그래머스 - 영어 끝말잇기[JS]  (0) 2023.02.12
프로그래머스 - 숫자의 표현 [JS]  (0) 2023.01.30
프로그래머스 - 명예의 전당  (1) 2023.01.24
'알고리즘(Algorithm)' 카테고리의 다른 글
  • [LeetCode] 1011.Capacity To Ship Packages Within D Days [JS]
  • [CodeWars] Give me a Diamond [JS / 6kyu] 다이아 찍기
  • 프로그래머스 - 영어 끝말잇기[JS]
  • 프로그래머스 - 숫자의 표현 [JS]
Hun-bot
Hun-bot
IT를 중심으로 다양한 것
  • Hun-bot
    로봇이 만드는 눈사람
    Hun-bot
  • 전체
    오늘
    어제
    • All Article (128)
      • Programmers (6)
        • TIP (1)
        • SQL (2)
        • LV1 (1)
        • LV2 (2)
        • LV3 (0)
      • Baekjoon (31)
        • Bronze (10)
        • Silver (19)
        • Gold (2)
        • Platinum (0)
        • Diamond (0)
      • Leetcode (0)
        • Easy (0)
        • Medium (0)
        • Hard (0)
        • SQL (0)
      • 알고리즘(Algorithm) (42)
      • JavaScript (40)
      • Linux (7)
      • JSP (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      c++
      JSP #Vscode #톰켓 #Tomcat #Java #Web #jdk
      Algorithm
      JS #JavaScript #프로그래머스 #알고리즘
      Python #알고리즘
      파이썬 #입력 #python #input
      Programmers
      async await #js #문법 #자바스크립트 #비동기
      JavaScript #Set #Collection
      JS #클래스
      고득점 Kit
      Vue #Vue.js #정리
      리눅스
      JS #javascript #객체 #Object
      JS #정규표현식
      오블완
      자바스크립트 #연습문제
      알고리즘
      자바스크립트
      JS #프로그래머스 #숫자의표현 #알고리즘
      리눅스 #입문
      프로그래머스 #자바스크립트 #JS
      Javascript
      BaekJoon
      알고리즘 #Algorithm
      LeetCode #JS #Javascript #Algorithm
      SQL
      프로그래머스
      JS #JavaScript #프로그래머스 #카카오
      티스토리챌린지
    • 최근 댓글

    • hELLO· Designed By정상우.v4.10.3
    Hun-bot
    [LeetCode/CodeWars] - Two Sum [JS]
    상단으로

    티스토리툴바

    티스토리툴바