[LeetCode] 001. Two Sum ( 두 수의 합)
- 💾 알고리즘/LeetCode_백준
- 2022. 5. 11. 18:14
🔗 문제
https://leetcode.com/problems/two-sum/
📝 포인트
타겟에서 첫번째 수를 빼면 두번째 수를 바로 알 수 있다.
그래서 두 번째 수를 키로하고 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)
'💾 알고리즘 > LeetCode_백준' 카테고리의 다른 글
[LeetCode] 561. Array Partition I (0) | 2022.06.07 |
---|---|
[LeetCode] 15. 세수의 합 (0) | 2022.05.31 |
[LeetCode] 42. Trapping Rain Water (빗물 트래핑) (0) | 2022.05.16 |
[LeetCode] 125. Valid Palindrome (팰린드롬) (0) | 2022.04.17 |
[LeetCode] 819. Most Common Word (가장 흔한 단어) (0) | 2022.03.23 |