๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

https://www.acmicpc.net/problem/2798

 

2798๋ฒˆ: ๋ธ”๋ž™์žญ

์ฒซ์งธ ์ค„์— ์นด๋“œ์˜ ๊ฐœ์ˆ˜ N(3 ≤ N ≤ 100)๊ณผ M(10 ≤ M ≤ 300,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์นด๋“œ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๋ฉฐ, ์ด ๊ฐ’์€ 100,000์„ ๋„˜์ง€ ์•Š๋Š” ์–‘์˜ ์ •์ˆ˜์ด๋‹ค. ํ•ฉ์ด M์„ ๋„˜์ง€ ์•Š๋Š” ์นด๋“œ 3์žฅ

www.acmicpc.net

์ฒ˜์Œ ํ’€์ด

N, M = map(int, input().split())
li = list(map(int, input().split()))
li.sort()
n = 3
sum = 0
          
for i in range(N):
    if n>0 and sum + li[N-1-i] <= M :
        sum += li[N-1-i]
        n -=1
        
print(sum)

 

์‚ผ์ค‘ for๋ฌธ(์ฐธ๊ณ )

N, M = map(int,(input().split()))

d = list(map(int, input().split())) # ์นด๋“œ ๋ฆฌ์ŠคํŠธ

result = 0
Max = 0

for i in range(N-2): # 3์ค‘ for๋ฌธ์„ ๋Œ๋ฉด์„œ ๊ฒน์น˜์ง€ ์•Š๊ฒŒ ๋ฒ”์œ„๋ฅผ ์ง€์ •
    for j in range(i+1,N-1):
        for k in range(j+1,N):
            if d[i]+d[j]+d[k] > M: # 3๊ฐœ์˜ ๊ฐ’ ๋”ํ•œ๊ฒƒ์ด M๋ณด๋‹ค ํฌ๋‹ค๋ฉด ๋„˜์–ด๊ฐ
                continue
            else:
                result = d[i]+d[j]+d[k]
                if Max <= result: # M๊ณผ ๊ฐ€์žฅ ์œ ์‚ฌํ•œ ๊ฐ’์€ ๊ฐ€์žฅ ํฐ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ตํ•ด์„œ ํฐ๊ฐ’์„ ์ €์žฅ
                    Max = result

print(Max)

 

์‚ผ์ค‘ for๋ฌธ(๋‚ด๊ฐ€ ์ž‘์„ฑ)

N,M = map(int, input().split())
card = list(map(int, input().split()))
max =0

for i in range(0,N-2):
    for j in range(i+1, N-1):
        for k in range(j+1, N):
            sum = card[i] + card[j] + card[k]
            if sum<=M and max<sum:
                max = card[i] + card[j] + card[k]
print(max)

 

 

ํŒจํ‚ค์ง€ ํ’€์ด

from itertools import combinations

n, m = map(int,input().split())

card = list(map(int, input().split()))
com = list(combinations(card, 3))
total = 0
for i in com:
    if sum(i) <= m:
        total = max(total, sum(i))
print(total)
๋ฐ˜์‘ํ˜•