728x90
leetcode.com/problems/two-sum/
자바로 풀었던 문제, 파이썬으로 풀어보기 !
먼저, 자바로 풀었던 내용 ⬇
public class TwoSum0316 {
public int[] twoSum(int[] nums, int target) {
int [] twoSum = new int[2];
for(int i=0;i<nums.length;i++) {
//이미 더한 경우는 더하지 않아도 되므로 j=i+1
for(int j=i+1;j<nums.length;j++) {
if(nums[i]+nums[j]==target) {
twoSum[0] = i;
twoSum[1] = j;
return twoSum;
}
}
}
return twoSum;
}
}
파이썬 풀이_1
class Solution(object):
def twoSum(self, nums, target):
for i in range(0, len(nums)-1):
for j in range(i+1, len(nums)):
if nums[i] + nums[j] == target:
return [i,j]
파이썬 풀이_2
딕셔너리로 풀이 (자바의 맵 기능)
def twoSum_dic(self, nums, target):
dic = {}
for i, number in enumerate(nums):
key = target - number
if key in dic:
return [dic[key], i]
dic[number] = i
- enumerate를 사용해서 nums 리스트 안의 값을 튜플 형태로 반환한다.
- i는 0부터 인덱스번호, number는 nums 리스트의 원소
- dic 딕셔너리에 {key:value} = {number:i} 형태로 저장 ➡ 리스트 원소(key)값으로 검색하고, 반환할 때 인덱스번호(value)를 반환하기 위해서
- 딕셔너리에 key값이 있다면 해당 key와 현재 리스트의 원소를 합한 값이 target이 되므로, 리스트 형태로 인덱스 결과값을 리턴한다.
✅ enumerate
- 반복문 사용 시 몇 번째 반복문인지 확인이 필요할 때 사용
- 인덱스 번호와 컬렉션의 원소를 tuple형태로 반환
>>> t = [1, 5, 7, 33, 39, 52]
>>> for p in enumerate(t):
... print(p)
...
(0, 1)
(1, 5)
(2, 7)
(3, 33)
(4, 39)
(5, 52)
참고 : wikidocs.net/16045
728x90
'코딩테스트' 카테고리의 다른 글
[Programmers] 더 맵게 - 힙(Heap) JAVA (2) | 2021.04.02 |
---|---|
[LeetCode] 455. Assign Cookies - Python (0) | 2021.04.02 |
[LeetCode] 860. Lemonade Change - Python (0) | 2021.03.30 |
[BAEKJOON] 1302. 베스트셀러 (0) | 2021.03.27 |
[LeetCode] 21. Merge Two Sorted Lists (0) | 2021.03.25 |