문제
Given a 1-indexed array of integers numbers that is already sorted in non-decreasing order, find two numbers such that they add up to a specific target number. Let these two numbers be numbers[index1] and numbers[index2] where 1 <= first < second <= numbers.length.
Return the indices of the two numbers, index1 and index2, as an integer array [index1, index2] of length 2.
The tests are generated such that there is exactly one solution. You may not use the same element twice.
제한
- 2 <= numbers.length <= 3 * 104
- -1000 <= numbers[i] <= 1000
- numbers is sorted in non-decreasing order.
- -1000 <= target <= 1000
- The tests are generated such that there is exactly one solution.
예제
풀이
import bisect
class Solution:
def twoSum(self, numbers: List[int], target: int) -> List[int]:
for idx, num1 in enumerate(numbers):
num2 = target - num1
if num2 in numbers:
return [idx+1, bisect.bisect_right(numbers, num2)]
'Algorithm' 카테고리의 다른 글
[프로그래머스 Level3] 정수 삼각형 (0) | 2021.10.14 |
---|---|
[백준/Python] 피보나치 수 5 (0) | 2021.10.13 |
[LeetCode/Python] Search Insert Position (0) | 2021.10.11 |
[백준/Python] 숫자 카드 (0) | 2021.10.09 |
[백준/Python] 단지번호붙이기 (0) | 2021.10.09 |