leetCode - Two Sum 문제 Memory Limit Exceeded 에러
class Solution(object):
def twoSum(self, nums, target):
def backtrack(start, curr):
# base case : 2개의 합을 더해서 target과 같으면
if len(curr) == 2 and sum(nums[i] for i in curr) == target:
return curr
# recursion :
for i in range(start, len(nums)):
curr.append(i)
res = backtrack(i + 1, curr)
if res:
return res
curr.pop()
return None
return backtrack(0, [])https://leetcode.com/problems/two-sum/submissions/1130560186/
이 코드로 작성해서 leet-code의 two sum 문제에 제출해봤을 때 Memory Limit Exceeded 에러가 나는건 어떻게 해결해야 할까요?
답변 1
1
안녕하세요 changonna님!!
오 이거 직접구현해서 돌려보셨군요.
이게 완전탐색을 설명하려다보니 우리가 배웠던 twosum을 가지고 온건데, 실제 이걸 돌려보면 재귀 호출과 추가 메모리 사용이 많아, 특히 큰 입력 배열에 대해서는 비효율적입니다.
그래서 우리가 반복문을 이용해서 완전탐색을 했던거에요~!
저희 처음에 twosum문제 배울 때 완전탐색 - 반복문 구현 (O(n^2))으로 구현했을 때에도 시간초과가 났잖아요. 근데 이걸 완전탐색 -재귀 구현(시간복잡도도 O(n^2)인데 재귀호출이 많아서 메모리사용이 엄청 많아짐)으로 구현하면 더 비효율적인 풀이가 되겠죠.
그래서 결국 우리 정렬을 하거나 dictionary 사용했던것처럼 풀이를 발전시켜야 합니다.
결론: 해당 문제의 제약조건 하에서는 완전탐색(더더욱 backtracking 구현)은 통과하기 힘들다.
하지만 구현자체는 굉장히 잘하셨어요!!
혹시 더 궁금한점 있으면 질문 남겨주세요 :)
노션 공유 링크
0
87
2
수업 중간에 내주신 문제는 해답을 알 수 없는걸까요?
0
77
2
최신 강의와 비교
0
85
2
Min Cost Climbing stairs 질문
0
76
2
노션 공유 부탁드립니다!
1
88
2
for 문에 sort 함수 를 사용하면
1
90
2
노션 공유 부탁드립니다.
0
104
2
디스코드가 올바르지 않다고 뜹니다..!
0
107
1
그래프
0
98
2
노션 공유
1
123
2
시간복잡도 질문
2
125
3
11강 질문
1
78
2
노션 공유 부탁드립니다
0
84
2
linkedList - BrowserHistory 코드 질문
0
76
1
list1.append(list2)와 list1.append(list2[:])의 차이가 무엇인가요?
1
168
1
라이브러리 사용
1
136
2
문제 교재는 따로 없는 거 맞나요?
1
202
2
LCA 관련해서 질문이 있습니다.
1
118
2
[Unique Paths] 완전탐색 / DP (후반부)
0
108
1
dp 계단오르기최소비용질문입니다.
0
109
1
Dynamic Array 의 size 정보가 저장되는 곳
2
161
2
노션공유가 안된듯 합니다
1
163
2
[코테 적용] 👉 [3번 문제] 완전탐색 (DFS, BFS) (전반부)
1
122
1
강의자료 만들 때 사용하신 프로그램이 뭘까요?
1
203
1





