๐ฉ๐ป๐พ
[๋ฐฑ์ค/Python] 1253๋ฒ ์ข์ ์ ๊ตฌํ๊ธฐ ๋ณธ๋ฌธ
[๋ฐฑ์ค/Python] 1253๋ฒ ์ข์ ์ ๊ตฌํ๊ธฐ
์ฅฌ์ค์ด 2023. 1. 31. 00:131๏ธโฃ๋ฌธ์ ์ค๋ช
N๊ฐ์ ์ ์ค์์ ์ด๋ค ์๊ฐ ๋ค๋ฅธ ์ ๋ ๊ฐ์ ํฉ์ผ๋ก ๋ํ๋ผ ์ ์๋ค๋ฉด ๊ทธ ์๋ฅผ “์ข๋ค(GOOD)”๊ณ ํ๋ค.
N๊ฐ์ ์๊ฐ ์ฃผ์ด์ง๋ฉด ๊ทธ ์ค์์ ์ข์ ์์ ๊ฐ์๋ ๋ช ๊ฐ์ธ์ง ์ถ๋ ฅํ๋ผ.
์์ ์์น๊ฐ ๋ค๋ฅด๋ฉด ๊ฐ์ด ๊ฐ์๋ ๋ค๋ฅธ ์์ด๋ค.
2๏ธโฃ์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ์์ ๊ฐ์ N(1 ≤ N ≤ 2,000), ๋ ๋ฒ์งธ ์ค์๋ i๋ฒ์งธ ์๋ฅผ ๋ํ๋ด๋ Ai๊ฐ N๊ฐ ์ฃผ์ด์ง๋ค. (|Ai| ≤ 1,000,000,000, Ai๋ ์ ์)
3๏ธโฃ์ถ๋ ฅ
์ข์ ์์ ๊ฐ์๋ฅผ ์ฒซ ๋ฒ์งธ ์ค์ ์ถ๋ ฅํ๋ค.
๐ฉ๐ป๐ป์์ฑํ ์ฝ๋
import sys
input = sys.stdin.readline
n = int(input()) # ์
๋ ฅ๋ฐ์ ์ ๊ฐ์
num = list(map(int, input().split())) #์
๋ ฅ ๋ฐ์ n๊ฐ์ ๋ฐ์ดํฐ
num.sort()
cnt = 0
for i in range(n):
good = num[i]
s = 0
e = n-1
while s < e:
if num[s] + num[e] == good:
if s != i and e != i:
cnt += 1
break
elif s == i:
s += 1
elif e == i:
e -= 1
elif num[s]+num[e] < good:
s += 1
else:
e -= 1
print(cnt)
๐ก์ฝ๋ ์ค๋ช
s์ e ๋๊ฐ์ ํฌ์ธํฐ๋ฅผ ์ค์ ํด์ฃผ์๋ค.
์ ๋ ฌ๋ ๋ฐ์ดํฐ์์ ์๊ธฐ ์์ ์ ์ข์ ์ ๋ง๋ค๊ธฐ์ ํฌํจํ๋ฉด ์๋๋ฏ๋ก num[s] + num[e] == good์ผ ๋, if๋ฌธ์ ์ฌ์ฉํด์ s์ e๊ฐ i๊ฐ ์๋์ง ํ์ธํด์ค์ผํ๋ค.
๋ ๋ค i๊ฐ ์๋๊ณ ๋ ์ธ๋ฑ์ค๊ฐ ๊ฐ๋ฅดํค๋ ๋ฐ์ดํฐ์ ํฉ์ด ์ข์ ์๊ฐ ๋ ๋ cnt += 1์ ํด์ฃผ๊ณ ,
s์ e ๋ ์ค ํ๋๊ฐ i์ ๊ฐ์ ๋๋ ํฌ์ธํฐ๋ฅผ ์กฐ์ ํด์ ์๊ธฐ ์์ ์ ํฌํจ์ํค์ง ์๋๋ก ํด์ค๋๋ค.
๊ทธ๋ฆฌ๊ณ num[s] + num[e] < good์ผ ๋๋, s += 1 ํด์ฃผ์ด ์์ ๊ฐ์ ๋๋ ค์ฃผ๊ณ
num[s] + num[e] > good์ผ ๋๋, e -= 1 ํด์ฃผ์ด ํฐ ๊ฐ์ ์ค์ฌ์ฃผ์ด good์ ๊ฐ์ ๊ฐ๊น์์ง๋๋ก ํฌ์ธํฐ๋ฅผ ์กฐ์ ํด์ค๋ค.
'์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/Python] 11003๋ฒ ์ต์๊ฐ ์ฐพ๊ธฐ 1 (0) | 2023.02.05 |
---|---|
[๋ฐฑ์ค/Python] 12891๋ฒ DNA ๋น๋ฐ๋ฒํธ (0) | 2023.02.03 |
[๋ฐฑ์ค/Python] 2018๋ฒ ์ฐ์๋ ์์ฐ์์ ํฉ ๊ตฌํ๊ธฐ (0) | 2023.01.29 |
[๋ฐฑ์ค/Python] 10986๋ฒ ๋๋จธ์ง (0) | 2023.01.29 |
[๋ฐฑ์ค/Python] 1940๋ฒ ์ฃผ๋ชฝ (0) | 2023.01.29 |