Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 25 additions & 15 deletions two-sum/hi-rachel.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,17 @@
"""
처음 풀이
O(N^2) time, O(N) space
"""
https://leetcode.com/problems/two-sum/

# class Solution:
# def twoSum(self, nums: List[int], target: int) -> List[int]:
# result = []
# for i in range(len(nums)):
# rest = target - nums[i]
# rest_nums = nums[i+1:]
# if rest in rest_nums:
# result.extend([i, rest_nums.index(rest)+i+1])
# break
# return result

Given an array of integers nums and an integer target,
return indices of the two numbers such that they add up to target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
You can return the answer in any order.

"""
개선 코드
O(N) time, O(N) space
"""

from typing import List

class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
indices = {}
Expand All @@ -31,6 +23,24 @@ def twoSum(self, nums: List[int], target: int) -> List[int]:
return [i, j]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

O(N)으로 개선하셨네요! 저도 개선해봐야겠어요!👍
근데 이렇게 하면 [1, 0]로 나오지 않나요??? 작은 인덱스가 먼저 나와야 할 것 같습니다.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hyunjung-choi @printjin-gmailcom

https://leetcode.com/problems/two-sum/description/

문제에 'You can return the answer in any order.'라고 써있어서 그렇게 냈습니다!

리트코드 풀 때 반환을 요구하는 경우도 봤습니다. 그렇다면 [j, i]로 내야겠네요.

리뷰 감사합니다.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

리턴할 때 [i, j] 대신 [j, i] 순서가 문제에서 요구하는 경우가 많으니, 문제 조건에 맞게 순서를 한 번 확인해보는 게 좋습니다.
(일반적으로 리트코드에선 이전 인덱스가 먼저 오기에 문제가 안 났지 않을까 싶습니다.)

indices[v] = i


"""
처음 풀이
O(N^2) time, O(N) space
"""

# class Solution:
# def twoSum(self, nums: List[int], target: int) -> List[int]:
# result = []
# for i in range(len(nums)):
# rest = target - nums[i]
# rest_nums = nums[i+1:]
# if rest in rest_nums:
# result.extend([i, rest_nums.index(rest)+i+1])
# break
# return result


# JS 풀이
# /**
# * @param {number[]} nums
Expand Down