반응형
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
- 백준
- 큐
- 자문형
- algoritms
- 혁신금융서비스
- 신한투자증권
- Ai
- BFS
- 모던자바스크립트
- SSAFY
- 자바스크립트
- 알고리즘
- BAEKJOON
- dfs
- 프로그래머스
- pyhton
- Python
- React #Web #프런트엔드
- 일임형
- 로보어드바이저
- 스택
- JS
- frontend
- 파이썬
- RPA
- algorithms
- Algorithm
- JavaScript
- programmers
- 자료구조
Archives
- Today
- Total
Step by Step
[baekjoon]세 용액 - Python 본문
반응형
문제 링크
https://www.acmicpc.net/problem/2473
문제 이해
이분 탐색 문제이다.
처음에는 왼쪽 포인터와 오른쪽 포인터를 설정한 후 가운데 값에서 나머지 한 값을 찾으려고 했다.
하지만 전체 범위를 0부터 (n-2)로 지정한 후 처음 i 값에서 1을 더한 값을 왼쪽 포인터로 두고 n-1을 오른쪽 포인터로 둔다.
🎱 범위가 n-2인 이유 => 왼쪽 포인터와 오른쪽 포인터를 포함해야 하므로 마지막 인덱스 값을 n-2로 두어야
왼쪽 포인터, 오른쪽 포인터 각 1개씩 설정할 수 있기 때문이다.
가장 왼쪽 값을 now_val = liquid[i]로 지정해둔 후 왼쪽 포인터를 i+1, 오른쪽 포인터를 n-1로 설정한다.
값이 0보다 크면 right_p를 -1하고 값이 0보다 작으면 left_p를 +1한다.
절댓값으로 비교한 후 값이 작을 때마다 res 리스트를 업데이트 해준다.
세 수의 합이 0일 시에는 바로 print한 후 sys.exit()로 종료하고 for문이 종료되면 res를 출력하여 0에 가장 가까운 값을 출력한다.
코드
import sys
n = int(sys.stdin.readline())
liquid = list(map(int,sys.stdin.readline().split()))
liquid.sort()
tmp = 3000000000
for i in range(n-2):
now_val = liquid[i]
left_p = i + 1
right_p = n - 1
while left_p < right_p:
tmp_sum = now_val + liquid[left_p] + liquid[right_p]
if abs(tmp_sum) <= abs(tmp) :
tmp = tmp_sum
res = [now_val, liquid[left_p], liquid[right_p]]
if tmp_sum > 0:
right_p -= 1
elif tmp_sum < 0:
left_p += 1
else:
print(*res)
sys.exit()
print(*res)
반응형
'Algorithms' 카테고리의 다른 글
코딩 테스트 대비 개념정리 - SQL (0) | 2024.05.10 |
---|---|
코딩 테스트 대비 개념 정리 - Python (0) | 2024.05.07 |
선택정렬 - 페어프로그래밍 (0) | 2024.04.29 |
[백준] 11286 절댓값 힙 - Pyhton(Heap) (0) | 2024.01.28 |
[백준] 1715 카드 정렬하기 - Python(HEAP) (1) | 2024.01.28 |