λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸƒ algorithm/leetcode

LeetCode 1 - Two Sum (Easy)

by HandHand 2021. 3. 2.

문제

LeetCode - 1번

풀이 κ³Όμ •

λ¬Έμ œλŠ” 두 수의 ν•©μœΌλ‘œ target 값을 λ§Œλ“€μ–΄λ‚΄λŠ” 경우λ₯Ό μ°ΎλŠ” κ²ƒμž…λ‹ˆλ‹€.

μ €λŠ” 브루트 포슀 λ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ¨λ“  두 숫자 쑰합을 λ§Œλ“€μ–΄λ³Έ λ‹€μŒ 닡을 μ°Ύμ•„λƒˆμŠ΅λ‹ˆλ‹€.

문제 ν•΄μ„€μ—μ„œλŠ” ν•΄μ‹œ ν…Œμ΄λΈ” 을 μ‚¬μš©ν•˜λŠ” 방법도 μžˆμ—ˆλŠ”λ° μ΄λŠ” λͺ¨λ“  수λ₯Ό 인덱슀 κ°’κ³Ό ν•¨κ»˜ ν•΄μ‹œ ν…Œμ΄λΈ” 에 μ €μž₯ν•œ λ’€
(target - λ°°μ—΄μ˜ 각 숫자) 에 ν•΄λ‹Ήν•˜λŠ” μˆ˜κ°€ ν•΄μ‹œν…Œμ΄λΈ” 에 μ‘΄μž¬ν•˜λŠ”μ§€ μ—¬λΆ€λ₯Ό λ”°μ Έ
μ‹œκ°„λ³΅μž‘λ„λ₯Ό μ€„μ΄λŠ” 방법도 μ œμ‹œν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
λ§Œμ•½ (target - λ°°μ—΄μ˜ 각 숫자) κ°€ ν˜„μž¬ ν•΄μ‹œν…Œμ΄λΈ” 에 μ‘΄μž¬ν•œλ‹€λ©΄ κ·ΈλŒ€λ‘œ 닡을 λ§Œλ“€μ–΄ λ°˜ν™˜ν•˜κ³ 
μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ ν˜„μž¬ 인덱슀의 값을 ν•΄μ‹œ ν…Œμ΄λΈ” 에 μΆ”κ°€ν•΄μ€λ‹ˆλ‹€.

μ½”λ“œ

브루트 포슀

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */

var twoSum = function (nums, target) {
  // λͺ¨λ“  쑰합을 μƒμ„±ν•©λ‹ˆλ‹€.
  for (let i = 0; i < nums.length; i++) {
    for (let j = i + 1; j < nums.length; j++) {
      if (nums[i] + nums[j] == target) {
        ans = [i, j];
        return ans;
      }
    }
  }
};

Map 을 μ‚¬μš©ν•œ 방법

var twoSum = function (nums, target) {
  const map = new Map();

  for (let i = 0; i < nums.length; i++) {
    const remain = target - nums[i];

    if (map.has(remain)) {
      return [map.get(remain), i];
    }

    map.set(nums[i], i);
  }
};
λ°˜μ‘ν˜•

'πŸƒ algorithm > leetcode' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

LeetCode 49 - Group Anagrams (Medium)  (0) 2021.03.02
LeetCode 200 - Number of Islands (Medium)  (0) 2021.03.02
LeetCode 64 - Minimum Path Sum (Medium)  (0) 2021.03.02
LeetCode 55 - Jump Game (Medium)  (0) 2021.03.02
LeetCode 70 - Climing Stairs (Easy)  (0) 2021.03.02

πŸ’¬ λŒ“κΈ€