๐ฉ [๋ฐฑ์ค] [Python] [Gold4] 1744๋ฒ_์ ๋ฌถ๊ธฐ
๋ฌธ์
https://www.acmicpc.net/problem/1744
1744๋ฒ: ์ ๋ฌถ๊ธฐ
๊ธธ์ด๊ฐ N์ธ ์์ด์ด ์ฃผ์ด์ก์ ๋, ๊ทธ ์์ด์ ํฉ์ ๊ตฌํ๋ ค๊ณ ํ๋ค. ํ์ง๋ง, ๊ทธ๋ฅ ๊ทธ ์์ด์ ํฉ์ ๋ชจ๋ ๋ํด์ ๊ตฌํ๋ ๊ฒ์ด ์๋๋ผ, ์์ด์ ๋ ์๋ฅผ ๋ฌถ์ผ๋ ค๊ณ ํ๋ค. ์ด๋ค ์๋ฅผ ๋ฌถ์ผ๋ ค๊ณ ํ ๋, ์์น์
www.acmicpc.net
ํ์ด
# ๋ฐฑ์ค 1744๋ฒ ๋ฌธ์ - ์ ๋ฌถ๊ธฐ
n = int(input())
minus_list = []
plus_list = []
one_list = []
answer = 0
for i in range(n):
num = int(input())
if num <= 0:
minus_list.append(num)
elif num > 1:
plus_list.append(num)
else:
one_list.append(num)
plus_list.sort(reverse=True)
minus_list.sort()
len_plus = len(plus_list)
len_minus = len(minus_list)
if len_plus % 2 == 1: # ํ์์ผ ๊ฒฝ์ฐ
answer += plus_list[-1]
for j in range(0, len_plus-1, 2):
answer += plus_list[j] * plus_list[j+1]
else:
for j in range(0, len_plus, 2):
answer += plus_list[j] * plus_list[j+1]
if len_minus % 2 == 1:
answer += minus_list[-1]
for j in range(0, len_minus-1, 2):
answer += minus_list[j] * minus_list[j+1]
else:
for j in range(0, len_minus, 2):
answer += minus_list[j] * minus_list[j+1]
for i in one_list:
answer += i
print(answer)
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ถ๋ฅ๋์ด ์๋ ๋ฌธ์ ์ด๋ค.
์ฃผ์ํด์ผ ํ ์ ์ ์์์ ์์๋ฅผ ๋๋๊ณ ๊ฐ์๊ฐ ์ง์์ธ์ง ํ์์ธ์ง ๊ตฌ๋ถํ๋ ๊ฒ์ด๋ค.
์์*์์ = ์์ ๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์์์ ์์๋ฅผ ๋ฐ๋ก ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค์ด ๊ณ์ฐํ๋ค.
์์๋ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ, ์์๋ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ ํด์ค๋ค.
์ง์๋ผ๋ฉด 2๊ฐ์ฉ ๋ฌถ์ด์ ๋จ๋ ๋ถ๋ถ์ด ์์ด์ ๋ชจ๋ ๋ฌถ์ด์ ๋ํด์ฃผ๋ฉด ๋๋ค.
๋ฐ๋ฉด ํ์๋ผ๋ฉด ์ ๋ ฌ์ ํด์ฃผ์ด์ ๋ง์ง๋ง ๊ฐ์ด ๊ฐ์ฅ ์์ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋จ๊ฒ ๋๋ ๋ง์ง๋ง ๊ฐ์ ๊ทธ๋ฅ ๋ํด์ฃผ๋ฉด ๋๋ค.
1์ ๊ณฑํ๊ธฐ ๋ณด๋ค ๋ํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ 1์ ๋ฐ๋ก ๋ํด์ฃผ๋๋ก ํ๋ค.