https://www.acmicpc.net/problem/2467
์์ด๋์ด
1. ์กฐํฉ
- ๋จ์ํ๊ฒ ๋ฆฌ์คํธ์ ์๋ ๊ฐ ์ค์์ ๋ ๊ฐ๋ฅผ ๋ฝ์ ๊ณ์ฐํ๋ ์ฝ๋๋ฅผ ์งฐ๋ค.
- ์๊ฐ ์ด๊ณผ ๋ฐ์
- ์๊ฐํด๋ณด๋๊น ์กฐํฉ์ด๋ฉด 100000C2์ธ๋ฐ 1์ด๋ก๋ ํ๋ ์๋ค.
2. ๋ฌธ์ ์ ์ค๋ฆ์ฐจ์์ด ํํธ
- ๋ฏธ๋ฆฌ ์ ๋ ฌ์ด ๋์ด์์ผ๋๊น ์ด๊ฑธ ์ด์ฉํ๋ผ๋ ์๋ฏธ๋ก ํด์
- ์ด๋ถ ํ์๊ณผ ๋น์ทํ๊ฒ ์ข์ฐ์์ ํ๋์ฉ ์ขํ๊ฐ๋ฉฐ ์ต์๊ฐ(0์ ๊ฐ๊น์ด ๊ฐ)์ ์ฐพ๊ธฐ๋ก ๊ฒฐ์ .
์ฝ๋ ์ค๋ช
while l < r:
cur_value = dragon_liquid[l] + dragon_liquid[r]
if abs(cur_value) <= value:
x = dragon_liquid[l]
y = dragon_liquid[r]
value = abs(cur_value)
if cur_value <= 0:
l += 1
else: # cur_value > 0
r -= 1
l์ 0, r์ N - 1๋ก ์ ์ธ. while๋ฌธ์ l์ด r์ ๋์ด๊ฐ๋ฉด ์ข ๋ฃํ๋๋ก ํ๋ค.
l๊ณผ r์ ์๋ฆฌ์ ์๋ ์ฉ์ก์ ํฉํด ๊ฐ์ ๊ตฌํ๋ค. ๊ทธ ์ ๋๊ฐ์ด 0์ ๊ฐ๊น์ด ๊ฐ์ด๋ฉด ๋ ์ฉ์ก์ ๊ฐ์ ์ ์ฅํ๊ณ ์ต์๊ฐ์ ์ ๋ฐ์ดํธํด์ค๋ค.
๋ ์ฉ์ก์ ํฉ์ด ์์๋ผ๋ฉด ์ผ์ชฝ ํฌ์ธํฐ๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ ์ฎ๊ธฐ๊ณ
์์๋ผ๋ฉด ์ค๋ฅธ์ชฝ ํฌ์ธํฐ๋ฅผ ์ผ์ชฝ์ผ๋ก ํ์นธ ์ฎ๊ธด๋ค.
์๋ํ๋ฉด ํฉ์ด ์์์์ ์ด ๊ฐ์ ๋ 0์ ๊ฐ๊น๊ฒ ํ๋ ค๋ฉด ์์ ๊ฐ์ ํฌ๊ฒ ํด์ผ ํ๊ณ
์์๋ผ๋ฉด ํฐ ๊ฐ์ ์๊ฒ ํด์ผ ํ๋๊น.
์ ์ฒด ์ฝ๋
value = 2000000000
N = int(input())
x, y = 0, 0
l = 0
r = N - 1
dragon_liquid = [int(x) for x in input().split()]
# ๋ฌธ์ ์์ ์ด๋ฏธ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
while l < r:
cur_value = dragon_liquid[l] + dragon_liquid[r]
if abs(cur_value) <= value:
x = dragon_liquid[l]
y = dragon_liquid[r]
value = abs(cur_value)
if cur_value <= 0:
l += 1
else: # cur_value > 0
r -= 1
print(x, y)
'๐งฉ Problem Solving > [๋ฐฑ์ค]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 12851 ์จ๋ฐ๊ผญ์ง 2 (python ํ์ด์ฌ) (0) | 2022.07.10 |
---|---|
[๋ฐฑ์ค] 1043 ๊ฑฐ์ง๋ง (python ํ์ด์ฌ) (0) | 2022.07.09 |
[๋ฐฑ์ค] 6064 ์นด์ ๋ฌ๋ ฅ (python ํ์ด์ฌ) (0) | 2022.07.06 |
[๋ฐฑ์ค] 11403 ๊ฒฝ๋ก์ฐพ๊ธฐ (python ํ์ด์ฌ) (0) | 2022.07.06 |
[๋ฐฑ์ค] 16236 ์๊ธฐ ์์ด (python ํ์ด์ฌ) (0) | 2022.07.05 |