1 ๋ถ„ ์†Œ์š”

๋ฐฑ์ค€ ์‚ฌ์ดํŠธ ๋งํฌ

๋ฌธ์ œ

์˜›๋‚  ์˜›์ ์— ์ˆ˜ํ•™์ด ํ•ญ์ƒ ํฐ ๊ณจ์นซ๊ฑฐ๋ฆฌ์˜€๋˜ ๋‚˜๋ผ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ด ๋‚˜๋ผ์˜ ๊ตญ์™• ๊น€์ง€๋ฏผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋‚ด๊ณ  ํฐ ์ƒ๊ธˆ์„ ๊ฑธ์—ˆ๋‹ค.

๊ธธ์ด๊ฐ€ N์ธ ์ •์ˆ˜ ๋ฐฐ์—ด A์™€ B๊ฐ€ ์žˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•จ์ˆ˜ S๋ฅผ ์ •์˜ํ•˜์ž.

S = A[0] ร— B[0] + โ€ฆ + A[N-1] ร— B[N-1]

S์˜ ๊ฐ’์„ ๊ฐ€์žฅ ์ž‘๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด A์˜ ์ˆ˜๋ฅผ ์žฌ๋ฐฐ์—ดํ•˜์ž. ๋‹จ, B์— ์žˆ๋Š” ์ˆ˜๋Š” ์žฌ๋ฐฐ์—ดํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.

S์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” A์— ์žˆ๋Š” N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง€๊ณ , ์…‹์งธ ์ค„์—๋Š” B์— ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. N์€ 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , A์™€ B์˜ ๊ฐ ์›์†Œ๋Š” 100๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— S์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1

5
1 1 1 6 0
2 7 8 3 1

์˜ˆ์ œ ์ถœ๋ ฅ 1

18

์˜ˆ์ œ ์ž…๋ ฅ 2

3
1 1 3
10 30 20

์˜ˆ์ œ ์ถœ๋ ฅ 2

80

์˜ˆ์ œ ์ž…๋ ฅ 3

9
5 15 100 31 39 0 0 3 26
11 12 13 2 3 4 5 9 1

์˜ˆ์ œ ์ถœ๋ ฅ 3

528

ํžŒํŠธ

์˜ˆ์ œ 1์˜ ๊ฒฝ์šฐ A๋ฅผ {1, 1, 0, 1, 6}๊ณผ ๊ฐ™์ด ์žฌ๋ฐฐ์—ดํ•˜๋ฉด ๋œ๋‹ค.

ํ’€์ด

A์˜ ๊ฐ€์žฅ ํฐ ๊ฐ’๊ณผ B์˜ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์„œ๋กœ ๊ณฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด S ๊ฐ’์ด ์ตœ์†Œ๊ฐ€ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ A๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ , B๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  S์— A์™€ B์˜ ๊ณฑ์„ ๋ˆ„์ ํ•ด์ฃผ๋ฉด ์ตœ์ข…์ ์ธ S ๊ฐ’์ด ๋‚˜์˜จ๋‹ค.

์ฝ”๋“œ

ver(1)

import sys 

# ์ž…๋ ฅ ๋ฐ›๊ธฐ
N = int(sys.stdin.readline())  # ํ–‰๋ ฌ์˜ ํฌ๊ธฐ
A = list(map(int, input().split()))  # ํ–‰๋ ฌ A์˜ ์›์†Œ
B = list(map(int, input().split()))  # ํ–‰๋ ฌ B์˜ ์›์†Œ
S=0  # ๊ฒฐ๊ณผ๊ฐ’์„ ์ €์žฅํ•  ๋ณ€์ˆ˜

# A์˜ ์ตœ๋Œ“๊ฐ’๊ณผ B์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ฐจ๋ก€๋กœ ๊ณฑํ•ด ๋”ํ•œ๋‹ค
for _ in range(N) :
    A_max = max(A)  # A ์ค‘ ์ตœ๋Œ“๊ฐ’ ์ฐพ๊ธฐ
    B_min = min(B)  # B ์ค‘ ์ตœ์†Ÿ๊ฐ’ ์ฐพ๊ธฐ
    S += A_max * B_min  # ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ๊ณฑํ•˜์—ฌ ๊ฒฐ๊ณผ๊ฐ’์— ๋”ํ•œ๋‹ค
    A.pop(A.index(A_max))  # A์—์„œ ์ตœ๋Œ“๊ฐ’ ์ œ๊ฑฐ
    B.pop(B.index(B_min))  # B์—์„œ ์ตœ์†Ÿ๊ฐ’ ์ œ๊ฑฐ

print(S)  # ๊ฒฐ๊ณผ๊ฐ’ ์ถœ๋ ฅ

ver(2)

import sys
# input()๋ณด๋‹ค ๋น ๋ฅธ ์ž…๋ ฅ์„ ์œ„ํ•ด sys.stdin.readline์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
input = sys.stdin.readline

# ์ฒซ๋ฒˆ์งธ ์ค„์— ์ •์ˆ˜ N์„ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค.
n = int(input())
# ๋ฆฌ์ŠคํŠธ A๋ฅผ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค.
a = list(map(int,input().split()))
# ๋ฆฌ์ŠคํŠธ B๋ฅผ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค.
b = list(map(int,input().split()))

# ๋ฆฌ์ŠคํŠธ A๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
a.sort(reverse=True)
# ๋ฆฌ์ŠคํŠธ B๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.
b.sort(reverse=False)

# ๋‘ ๋ฆฌ์ŠคํŠธ์˜ ์ธ๋ฑ์Šค๋ณ„ ๊ณฑ์˜ ํ•ฉ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€์ˆ˜ s๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
s = 0
# ๋ฆฌ์ŠคํŠธ A์™€ B์˜ ๊ธธ์ด๋Š” N์ด๋ฏ€๋กœ, 0๋ถ€ํ„ฐ N-1๊นŒ์ง€ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
for i in range(n):
    # A[i]์™€ B[i]์˜ ๊ณฑ์„ s์— ๋”ํ•ฉ๋‹ˆ๋‹ค.
    s += a[i]* b[i]

# s๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
print(s)

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ