Skip to content

Commit afbdb51

Browse files
authored
Merge pull request #201 from AlgorithmStudy-Allumbus/YoonYn9915
feat: 4์›” 3์ฃผ์ฐจ ๋ฐœ์ œ ์ž๋ฃŒ ์—…๋กœ๋“œ
2 parents 2f7766e + 0c2503c commit afbdb51

File tree

4 files changed

+64
-0
lines changed

4 files changed

+64
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
N = int(input())
2+
sol = list(map(int, input().split()))
3+
sol.sort()
4+
5+
result = [1000000000, 1000000000, 1000000000]
6+
for k in range(N):
7+
i = k + 1
8+
j = N - 1
9+
while i < j:
10+
if abs(sol[i] + sol[j] + sol[k]) < abs(sum(result)):
11+
result = [sol[k], sol[i], sol[j]]
12+
13+
if sol[i] + sol[j] + sol[k] > 0:
14+
j -= 1
15+
elif sol[i] + sol[j] + sol[k] < 0:
16+
i += 1
17+
else:
18+
break
19+
20+
print(*result)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
## ๐Ÿš€4์›” 3์ฃผ์ฐจ (4/21) ์Šคํ„ฐ๋”” ๋ฐœ์ œ ์ฃผ์ œ: Two Pointer, Binary Search
2+
> ๋ฐœ์ œ์ž: ์กฐ์œค์ƒ (@YoonYn9915)
3+
4+
> [!NOTE]
5+
> ์ฃผ์ œ: Two Pointer, Binary Search
6+
7+
### ๐Ÿ—‚๏ธ ์Šคํ„ฐ๋”” ์ž๋ฃŒ
8+
- PDF: [๋ฐ”๋กœ๊ฐ€๊ธฐ
9+
](Study_BOJ_2240.pdf)
10+
11+
### ๐Ÿ“– ๋ฌธ์ œ
12+
- [๋ฐฑ์ค€ #2240. ๋‘ ์šฉ์•ก](https://www.acmicpc.net/problem/2240): Two Pointer, Binary Search / ๊ณจ๋“œ 5
13+
- ์ •๋‹ต ์ฝ”๋“œ: [Study_BOJ_2240_๋‘ ์šฉ์•ก.py](Study_BOJ_1759_์•”ํ˜ธ๋งŒ๋“ค๊ธฐ.py)
14+
15+
### ๐Ÿ’ป ๊ณผ์ œ
16+
- [๋ฐฑ์ค€ #2473. ์„ธ ์šฉ์•ก](https://www.acmicpc.net/problem/2473): Two Pointer, Binary Search / ๊ณจ๋“œ 3
17+
- ์ •๋‹ต ์ฝ”๋“œ: [Assignment_BOJ_2473_์„ธ ์šฉ์•ก.py](Assignment_BOJ_2473_์„ธ ์šฉ์•ก.py)
389 KB
Binary file not shown.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import sys
2+
3+
N = int(sys.stdin.readline())
4+
arr = sorted(map(int, sys.stdin.readline().split()))
5+
6+
left = 0
7+
right = N - 1
8+
9+
answer = (arr[left], arr[right], abs(arr[left] + arr[right]))
10+
11+
# ํˆฌ ํฌ์ธํ„ฐ ์‚ฌ์šฉํ•ด์„œ ์ ˆ๋Œ€๊ฐ’์ด 0์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋‘ ๊ฐ’ ์ฐพ๊ธฐ
12+
while left < right:
13+
total = arr[left] + arr[right]
14+
abs_total = abs(total)
15+
16+
if abs_total < answer[2]:
17+
answer = (arr[left], arr[right], abs_total)
18+
if abs_total == 0:
19+
break
20+
# ๋‘ ์šฉ์•ก์˜ ๊ฐ’์ด 0๋ณด๋‹ค ํฌ๋ฉด right๋ฅผ ์ค„์—ฌ์„œ ํ•ฉ์„ ์ž‘๊ฒŒ ๋งŒ๋“ ๋‹ค
21+
if total > 0:
22+
right -= 1
23+
else:
24+
# ๋‘ ์šฉ์•ก์˜ ๊ฐ’์ด 0๋ณด๋‹ค ์ž‘์œผ๋ฉด left๋ฅผ ๋Š˜๋ ค์„œ ํ•ฉ์„ ํฌ๊ฒŒ ๋งŒ๋“ ๋‹ค
25+
left += 1
26+
27+
print(f"{answer[0]} {answer[1]}")

0 commit comments

Comments
ย (0)