Two Sum 문제 질문드립니다.
310
작성한 질문수 1
시간복잡도 O(nlogn)으로 코드를 작성하는 중인데,
코드 맨 마지막 줄에서 index 함수를 썼을 때, 중복값은 제일 맨 앞 인덱스만 반환하더라구요.
다른 해결 방법이 있을지 궁금합니다!
nums = [3,3], target = 6
Output: [0,1]class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
array = sorted(nums)
left = 0
right = len(nums)-1
while left < right:
if array[left] + array[right] > target:
right -= 1
elif array[left] + array[right] < target:
left -= 1
elif array[left] + array[right] == target:
return [nums.index(array[left]), nums.index(array[right])] # 이 부분
답변 1
0
안녕하세요 배추님. Discord를 참고하셔도 좋을 것 같아요.
https://discord.com/channels/941959559759679559/1065795296518471680
nums.index()를 사용하셨군요. 좋은 접근같아요. 근데, 이 문제에서는 중복된 숫자 상황에서 우리가 원하는대로 결과값이 안나오죠. 음..
저는 일단 아래와 같이 풀이했습니다.
def twoSum(self, nums, target):
origin_indices = {}
for idx, val in enumerate(nums):
if val in origin_indices:
origin_indices[val].append(idx)
else:
origin_indices[val] = [idx]
nums.sort()
l, r = 0, len(nums)-1
while l < r:
if target > (nums[l] + nums[r]):
l += 1
elif target < (nums[l] + nums[r]):
r -= 1
else:
return [origin_indices[nums[l]][0], origin_indices[nums[r]][-1]]
이 코드에서 좀 더 개선할 사항이 있다면 피드백 해주세요 ㅎㅎ
list.index()를 활용하는 방법으로는 해결법이 떠오르지 않네요 ㅜ
개선된 코드는 디스코드에서도 공유해 주세요 :)
노션 공유 링크
0
92
2
수업 중간에 내주신 문제는 해답을 알 수 없는걸까요?
0
79
2
최신 강의와 비교
0
87
2
Min Cost Climbing stairs 질문
0
77
2
노션 공유 부탁드립니다!
1
89
2
for 문에 sort 함수 를 사용하면
1
91
2
노션 공유 부탁드립니다.
0
105
2
디스코드가 올바르지 않다고 뜹니다..!
0
107
1
그래프
0
100
2
노션 공유
1
123
2
시간복잡도 질문
2
125
3
11강 질문
1
78
2
노션 공유 부탁드립니다
0
84
2
linkedList - BrowserHistory 코드 질문
0
77
1
list1.append(list2)와 list1.append(list2[:])의 차이가 무엇인가요?
1
169
1
라이브러리 사용
1
137
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
165
2
[코테 적용] 👉 [3번 문제] 완전탐색 (DFS, BFS) (전반부)
1
122
1
강의자료 만들 때 사용하신 프로그램이 뭘까요?
1
205
1





