파이썬 def 메서드 정의할 때 ->가 헷갈림. 브루트 포스로 인덱스 반환 계산하기.
2023. 8. 2. 15:32ㆍpython
반응형
from typing import List
def twoSum(nums: List[int], target: int) -> List[int]:
for n in range(len(nums)):
for n2 in range(n+1, len(nums)):
if nums[n] + nums[n2] == target:
return List[n, n2]
print(twoSum([7,11,15, 2], 9))
이거 위에 있는 것 틀린 코드다. 실행하면 에러남.
리스트 형 반환하는게 헷갈린다. List로 반환하면 오류가 난다.
return [n, n2] 로 해야 한다.
from typing import List
def twoSum(nums: List[int], target: int) -> List[int]:
num_dict = {}
for i, num in enumerate(nums):
if num in num_dict:
return [num_dict[num], i]
else:
num_dict[target - num] = i
print(twoSum([2,3,6,15], 9))
다음은 제일 처음 썼던 코드와 목적은 같은데, in 을 이용한 것.
nums 리스트의 모든 요소를 순회하는 반복문을 실행
각 숫자가 num_dict에 존재하는지 확인.
- 만약 숫자가 num_dict에 존재한다면, 그 숫자와 현재 숫자가 타겟을 더하는 두 요소라는 뜻.
이 경우, num_dict에서 저장해 두었던 그 숫자의 인덱스와 현재 숫자의 인덱스를 반환한다.
- 만약 숫자가 num_dict에 존재하지 않는다면, 타겟에서 현재 숫자를 뺀 결과를 키로, 현재 숫자의 인덱스를 값으로 num_dict에 저장한다.
위의 숫자에서 [2,3,6,15] 이라는 리스트와 9라는 타겟이 주어졌다. 2가 들어오면 num_dict에 {7:0}을 추가한다.
(9 - 2 = 7 이고 2의 인덱스는 0)
그 다음 3를 확인하고 num_dict에 {6:1}을 추가.(9 - 3 = 6 )
그 다음 6을 확인하면, num_dict에서 6을 키로 가지는 항목을 발견하게 된다. 그래서 1 (3의 인덱스)과 2 (6의 인덱스)를 반환한다. 3+6=9 라는 것이 성립된다는 의미.
어려움.. 선인들은 이런걸 어떻게 생각했지!?
728x90
'python' 카테고리의 다른 글
파이썬 데크(deque) 공부하기. (0) | 2023.08.08 |
---|---|
경기도미래기술학교 AI개발자 부트캠프 61일차 TIL- Linked list의 개념. (0) | 2023.08.02 |
경기도미래기술학교 AI개발자 부트캠프 60일차 TIL- 알고리즘 공부. 딕셔너리를 잘 몰랐다. 재귀 함수. 유클리드 호제법. (0) | 2023.08.01 |
파이썬에서 yaml. 디비 정보 등 개인정보 보호하기. (0) | 2023.07.24 |
경기도미래기술학교 AI개발자 부트캠프 52일차 TIL- 머신러닝 공부 계속. randomforestclassifier 등 (0) | 2023.07.19 |