[LeetCode] 001. Two Sum ( 두 수의 합)

🔗 문제

https://leetcode.com/problems/two-sum/

 

Two Sum - 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

 

📝 포인트

타겟에서 첫번째 수를 빼면 두번째 수를 바로 알 수 있다.

그래서 두 번째 수를 키로하고 INDEX를 값으로 하면 키로 값을 바로 찾을 수 있다.

 

💻 코드(Java)

class Solution {
    public int[] twoSum(int[] nums, int target) {
        
        HashMap<Integer, Integer> nums_map = new HashMap<>();
        int[] answer = new int[2];
        for (int i = 0; i < nums.length; i++) {
            nums_map.put(nums[i], i);
        }

       // System.out.println("nums_map = " + nums_map);

        for (int i = 0; i < nums.length; i++) {
        	// map에 해당 값 있는지 체크 ,  i와 map의 인덱스랑 중복 검사 
            if (nums_map.containsKey(target - nums[i]) && i != nums_map.get(target-nums[i]) ) {
                //System.out.println(i + " ,, " + nums_map.get(target-nums[i]));
                //break;
                answer[0] = i;
                answer[1] = nums_map.get(target-nums[i]);
                //return answer;
                break;
            }
        }

        return answer;
        
    }
}

 

💻 코드(Python)

from typing import List

class solution:
    def twoSum(self, nums:List[int], target:int) -> List[int]:
        nums_map = {}

        # key, value 바꿔서 딕셔너리에 저장
        for i, num in enumerate(nums):
            nums_map[num] = i

        # 타켓에서 첫 번째 수를 뺀 결과를 키로 조회
        # i 는 index , num은 값
        for i, num in enumerate(nums):
            print(i , nums_map[target - num])
            if target - num in nums_map and i != nums_map[target - num]:
                return [i, nums_map[target - num]]



nums = [2,7,11,15]
target= 9

ss = solution()
result = ss.twoSum(nums, target)
print(result)

댓글

Designed by JB FACTORY