๐ชข ์ ๋ฌถ๊ธฐ
๋ฐฑ์ค Gold4
๋ฌธ์
๊ธธ์ด๊ฐ N์ธ ์์ด์ด ์ฃผ์ด์ก์ ๋, ๊ทธ ์์ด์ ํฉ์ ๊ตฌํ๋ ค๊ณ ํ๋ค. ํ์ง๋ง, ๊ทธ๋ฅ ๊ทธ ์์ด์ ํฉ์ ๋ชจ๋ ๋ํด์ ๊ตฌํ๋ ๊ฒ์ด ์๋๋ผ, ์์ด์ ๋ ์๋ฅผ ๋ฌถ์ผ๋ ค๊ณ ํ๋ค. ์ด๋ค ์๋ฅผ ๋ฌถ์ผ๋ ค๊ณ ํ ๋, ์์น์ ์๊ด์์ด ๋ฌถ์ ์ ์๋ค. ํ์ง๋ง, ๊ฐ์ ์์น์ ์๋ ์(์๊ธฐ ์์ )๋ฅผ ๋ฌถ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค ์๋ฅผ ๋ฌถ๊ฒ ๋๋ฉด, ์์ด์ ํฉ์ ๊ตฌํ ๋ ๋ฌถ์ ์๋ ์๋ก ๊ณฑํ ํ์ ๋ํ๋ค.
์๋ฅผ ๋ค๋ฉด, ์ด๋ค ์์ด์ด {0, 1, 2, 4, 3, 5}์ผ ๋, ๊ทธ๋ฅ ์ด ์์ด์ ํฉ์ ๊ตฌํ๋ฉด 0+1+2+4+3+5 = 15์ด๋ค. ํ์ง๋ง, 2์ 3์ ๋ฌถ๊ณ , 4์ 5๋ฅผ ๋ฌถ๊ฒ ๋๋ฉด, 0+1+(23)+(45) = 27์ด ๋์ด ์ต๋๊ฐ ๋๋ค.
์์ด์ ๋ชจ๋ ์๋ ๋จ ํ๋ฒ๋ง ๋ฌถ๊ฑฐ๋, ์๋๋ฉด ๋ฌถ์ง ์์์ผํ๋ค.
์์ด์ด ์ฃผ์ด์ก์ ๋, ์์ด์ ๊ฐ ์๋ฅผ ์ ์ ํ ๋ฌถ์์ ๋, ๊ทธ ํฉ์ด ์ต๋๊ฐ ๋๊ฒ ํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ด์ ํฌ๊ธฐ N์ด ์ฃผ์ด์ง๋ค. N์ 50๋ณด๋ค ์์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ์์ด์ ๊ฐ ์๊ฐ ์ฃผ์ด์ง๋ค. ์์ด์ ์๋ -1,000๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์์ด๋ค.
์ถ๋ ฅ
์๋ฅผ ํฉ์ด ์ต๋๊ฐ ๋์ค๊ฒ ๋ฌถ์์ ๋ ํฉ์ ์ถ๋ ฅํ๋ค. ์ ๋ต์ ํญ์ 231๋ณด๋ค ์๋ค.
์์ ์ ๋ ฅ 1
4
-1
2
1
3
์์ ์ถ๋ ฅ 1
6
์์ ์ ๋ ฅ 2
6
0
1
2
4
3
5
์์ ์ถ๋ ฅ 2
27
์์ ์ ๋ ฅ 3
1
-1
์์ ์ถ๋ ฅ 3
-1
์์ ์ ๋ ฅ 4
3
-1
0
1
์์ ์ถ๋ ฅ 4
1
์์ ์ ๋ ฅ 5
2
1
1
์์ ์ถ๋ ฅ 5
2
๐ ๊ฐ์ ธ๋ค ์ฐ๊ธฐ
๋ธ๋ฃจํธ ํฌ์ค(์คํจ)
์ฒ์์๋ ์ ๋ ฅ ์ ํ ์กฐ๊ฑด์ ๋ณด๊ณ ๋ธ๋ฃจํธ ํฌ์ค๋ก ํ์ด๋ ๋๊ฒ ๋ค๊ณ ์๊ฐํ์๋ค. ๊ทธ๋ฌ๋ ์๊ฐ๋ณด๋ค ๊ตฌํ ๋ฐฉ์์ด ๋๋ฌด ์ด๋ ค์ ๊ณ ์ค๊ณ์ ๊ฐ๋ฅ์ด ์ ์กํ๋ค.
๊ทธ๋ฆฌ๋
๊ทธ๋์ ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ๋ฅผ ํ์ธํด๋ณด์์ ๋ ๊ทธ๋ฆฌ๋๋ผ๋ ๊ฒ์ ๋ณด๊ณ ์ด ๋ฌธ์ ์์ ์ ๊ทธ๋ฆฌ๋๋ฅผ ์ฌ์ฉํ ๊น๋ฅผ ๊ณ ์ฐฐํด๋ณด์๋ค.
2๊ฐ์ ์๋ฅผ ๋ฌถ์ด์ ์ต๋๋ฅผ ๋ง์ถ์ด์ผ ํ๋ ๊ฒ์ธ๋ฐ ๊ทธ ๋๊ฐ๋ฅผ ๋ฝ์ ๋ ๋ง๋ค ์ต๋ํ์ ์ด๋์ ๋ณด๋ฉด ์ต์ข ์ ์ธ ์ต๋๋ฅผ ๊ตฌํ ์ ์๋ค.
๊ทธ๋์ ์ด๋ป๊ฒ ํ๋ฉด ์ต๋ํ์ ์ด๋์ ๋ณผ ์ ์์๊น๋ฅผ ์๊ฐํด ๋ณธ ๊ฒฐ๊ณผ๊ฐ ์๋์ ๊ฐ๋ค.
๐ ๊ณผ์ ์ค๊ณ/๊ด๋ฆฌ
- ์์๋ฅผ ๋ด๋ฆผ์ฐจ์, ์์๋ฅผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
- (์์์์) , (์์์์) ๐๐ป ์ด๋
- 0์ ์์๋ ๊ณฑํด์ค์ผ ์ด๋
- 1์ ์์๋ ์์๋ ๊ทธ๋ฅ ๋ํด์ค์ผ ์ด๋
๐จ๐ปโ๐ป CODE
import sys
input = sys.stdin.readline
length = int(input())
positive = [] # ์์ ๋ฐฐ์ด
negative = [] # ์์ ๋ฐฐ์ด
one = [] # 1 ๋ฐฐ์ด
answer = 0
for i in range(length):
num = int(input())
if num == 1:
one.append(num)
else:
if num > 0:
positive.append(num)
if num <= 0:
negative.append(num)
positive.sort(reverse=True)
negative.sort()
if len(positive) % 2 == 1:
answer += positive.pop()
for i in range(0,len(positive),2):
answer += positive[i]*positive[i+1]
if len(negative) % 2 == 1:
answer += negative.pop()
for i in range(0,len(negative),2):
answer += negative[i]*negative[i+1]
answer += len(one)
print(answer)