반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코테연습
- sql
- javascript
- react
- web
- 리액트
- 파이썬
- Level3
- OS
- 리트코드
- 배열
- VUE
- 프로그래머스
- Level2
- Level1
- Doitvue.js입문
- 카카오
- Medium
- C++
- dp
- CS
- typescript
- 백준
- 자바스크립트
- 고득점Kit
- LeetCode
- 웹프로그래밍
- 프로그래밍
- 동적계획법
- python
Archives
- Today
- Total
[리트코드] 16. 3Sum Closest 본문
반응형
16. 3Sum Closest
문제
Given an integer array nums of length n and an integer target, find three integers in nums such that the sum is closest to target.
Return the sum of the three integers.
You may assume that each input would have exactly one solution
taget에 가장 가까운 세 수의 합 찾기
제한사항
- 3 <= nums.length <= 1000
- -1000 <= nums[i] <= 1000
- -104 <= target <= 104
풀이
answer 값은 아무 값이나 3개 고른 값의 합으로 초기화해준다.
기준 포인터를 하나 두고 나머지 범위에서 투 포인터를 움직인다.
mid는 세 수 의 합이다.
mid에서 target를 뺀 절댓값이 answer에서 target을 뺀 절댓값보다 작을 경우 answer를 업데이트해준다.
그 후로 mid 값이 target과 같을 때를 목표로 이진 탐색한다.
class Solution:
def threeSumClosest(self, nums: List[int], target: int) -> int:
nums.sort()
answer = sum(nums[:3])
for i in range(len(nums) - 2):
l, r = i + 1, len(nums) - 1
while l < r:
s = nums[i] + nums[l] + nums[r]
if abs(s - target) < abs(answer - target):
answer = s
if s < target:
l += 1
elif s > target:
r -= 1
else:
return s
return answer
세 수의 합의 최소값을 구하는 문제이기 때문에 중복을 제거해줄 필요가 없다.
반응형
'코테 문제 풀이' 카테고리의 다른 글
[리트코드] 48. Rotate Image (0) | 2022.04.14 |
---|---|
[리트코드] 18. 4Sum - python (0) | 2022.04.14 |
[리트코드] 15. 3Sum - python (0) | 2022.04.14 |
[리트코드] 494. Target Sum (0) | 2022.04.13 |
[리트코드] 1. Two Sum (0) | 2022.04.13 |
Comments