https://www.acmicpc.net/problem/1940
1940๋ฒ: ์ฃผ๋ชฝ
์ฒซ์งธ ์ค์๋ ์ฌ๋ฃ์ ๊ฐ์ N(1 ≤ N ≤ 15,000)์ด ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋ฒ์งธ ์ค์๋ ๊ฐ์ท์ ๋ง๋๋๋ฐ ํ์ํ ์ M(1 ≤ M ≤ 10,000,000) ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ์ ์งธ ์ค์๋ N๊ฐ์ ์ฌ๋ฃ๋ค์ด ๊ฐ์ง ๊ณ
www.acmicpc.net
์ด ๋ฌธ์ ๋ ์ ๋ ฌ๊ณผ ํฌ ํฌ์ธํฐ๋ก ๋ถ๋ฅ๋ ๋ฌธ์ ์ด๋ค..!
์ด ๋ถ๋ฅ๋ฅผ ๋ณด๊ณ ํํธ๋ฅผ ์ป์ด ํ ์ ์์๋ ๋ฌธ์ ์ด๋ค.
# 1์ฐจ ์๋ : ์๊ฐ ์ด๊ณผ
n = int(input())
m = int(input())
lst = list(map(int, input().split()))
cnt = 0
for i in range(n):
for j in range(i+1,n):
print(i,j)
if lst[i]+lst[j] == m:
print(lst[i],lst[j])
cnt += 1
print()
print(cnt)
์ฒ์์ ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ง ์๊ณ , ๋ชจ๋ ์์์ ๊ฐ์ ๋น๊ตํ๊ณ cnt๋ฅผ ๋๋ ค์ฃผ์๋ค.
์ด์ค๋ฐ๋ณต๋ฌธ์ด ์ฌ์ฉ๋ผ O(N^2)์ด๊ณ , ๊ฒฐ๊ตญ ๋ต์ ๋ง์์ผ๋ ์๊ฐ ์ด๊ณผ๊ฐ ๋จ๊ฒ ๋์๋ค.
์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ ๊ทธ๋๋ก ์ ๋ ฌ ํ ํฌ ํฌ์ธํฐ๋ฅผ ์ด์ฉํด์ฃผ์๋ค
n = int(input())
m = int(input())
lst = list(map(int, input().split()))
cnt = 0
## 1 2 3 4 5 7
start, end = 0, n-1
lst.sort()
while start<end:
if lst[start]+lst[end] == m:
cnt += 1
start += 1
end -= 1
elif lst[start]+lst[end] < m :# ํฉ์ด ๋ ์๋ค๋ฉด
start += 1
else :
end -= 1
print(cnt)
์ด์ค๋ฐ๋ณต๋ฌธ์์ ํ๋์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ค์ผ ์ ์์๋ค.
์์ฆ์ ๋ฌธ์ ๋ฅผ ๋ง์ถ๋ ๊ฒ์ ๊ทธ์น์ง ์๊ณ , ์ฝ๋๊ฐ ๊น๋ํ์ง ๊ทธ๋ฆฌ๊ณ ๊ณต๊ฐ๊ณผ ์๊ฐ ๋ณต์ก๋๋ฅผ ์ ๊ฒฝ์ฐ๊ณ ์๋ค.
'์ฝํ ์ค๋น' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
<๊ตฌํ> ๋ฐฑ์ค 2563๋ฒ. ์์ข ์ด (0) | 2023.01.16 |
---|---|
<๊ตฌํ, ๋ฌธ์์ด> ๋ฐฑ์ค 17413๋ฒ. ๋จ์ด ๋ค์ง๊ธฐ 2 (์ค๋ฒ 3) (0) | 2023.01.16 |
<๊ตฌํ> ๋ฐฑ์ค 20546๋ฒ. ๊ธฐ์ ์ ๋งค๋งค๋ฒ (์ค๋ฒ 5) (0) | 2023.01.14 |
<์์ ํ์> ํ๋ก๊ทธ๋๋จธ์ค ์นดํซ (0) | 2023.01.12 |
<๊ตฌํ> ๋ฐฑ์ค 9093๋ฒ. ๋จ์ด ๋ค์ง๊ธฐ (๋ธ๋ก ์ฆ 1) (0) | 2023.01.12 |