SWLUG/๋ฐฑ์ค€ BEAKJOON

[BAEKJOON/๋ฐฑ์ค€] 2798๋ฒˆ: ๋ธ”๋ž™์žญ

waterproof 2024. 5. 8. 14:29
N, M = map(int, input().split()) 
cards = list(map(int, input().split())) 

max_sum = 0  # ์ตœ๋Œ€ ํ•ฉ ์ดˆ๊ธฐํ™”

# ๋ชจ๋“  ์นด๋“œ์˜ ์กฐํ•ฉ์„ ํƒ์ƒ‰
for i in range(N - 2):
    for j in range(i + 1, N - 1):
        for k in range(j + 1, N):
            card_sum = cards[i] + cards[j] + cards[k]  
            if card_sum <= M and card_sum > max_sum:
                max_sum = card_sum 
print(max_sum)

 

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


[1] ๋ฌธ์ œ ํ’€์ด

 

์ด ๋ฌธ์ œ๋Š” N์žฅ์˜ ์นด๋“œ ์ค‘์—์„œ 3์žฅ์˜ ์นด๋“œ๋ฅผ ์„ ํƒํ•˜์—ฌ ๊ทธ ํ•ฉ์ด M์„ ๋„˜์ง€ ์•Š์œผ๋ฉด์„œ M์— ์ตœ๋Œ€ํ•œ ๊ฐ€๊น๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์š”๊ตฌํ•œ๋‹ค.

 

 

1. ์ž…๋ ฅ ํ˜•์‹ :

  • ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์นด๋“œ์˜ ๊ฐœ์ˆ˜ N๊ณผ M์ด ์ฃผ์–ด์ง„๋‹ค.
  • ๋‘ ๋ฒˆ์งธ ์ค„์—๋Š” N์žฅ์˜ ์นด๋“œ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

 

2. ์ถœ๋ ฅ ํ˜•์‹ :

  • M์„ ๋„˜์ง€ ์•Š์œผ๋ฉด์„œ M์— ์ตœ๋Œ€ํ•œ ๊ฐ€๊นŒ์šด ์นด๋“œ 3์žฅ์˜ ํ•ฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ–ˆ๋‹ค. :

  • ๋ชจ๋“  ์นด๋“œ์˜ ์กฐํ•ฉ์„ ์ฐพ์•˜๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์„ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.  (์ด ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N^3)์ด ๋˜๊ธด ํ•˜์ง€๋งŒ... ์ œํ•œ์ด 100๊ฐœ์˜ ์นด๋“œ๊นŒ์ง€์ด๋ฏ€๋กœ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.)
  • ๊ฐ ์กฐํ•ฉ์˜ ํ•ฉ์„ ๊ณ„์‚ฐํ•˜๊ณ , M์„ ๋„˜์ง€ ์•Š๋Š” ์ตœ๋Œ€์˜ ํ•ฉ์„ ์ฐพ๋Š”๋‹ค.

 

N, M = map(int, input().split())
cards = list(map(int, input().split()))
max_sum = 0


for i in range(N - 2):
    for j in range(i + 1, N - 1):
        for k in range(j + 1, N):
            card_sum = cards[i] + cards[j] + cards[k] 
            if card_sum <= M and card_sum > max_sum: 
                max_sum = card_sum 

print(max_sum)

 

์ค‘์ฒฉ ๋ฐ˜๋ณต๋ฌธ์„ ์ค‘์‹ฌ์ ์œผ๋กœ ๋ถ„์„์„ ํ•ด๋ณด์ž๋ฉด,

 

1. ์ฒซ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ (for i in range(N - 2):):

์ด ๋ฐ˜๋ณต๋ฌธ์€ ์ฒซ ๋ฒˆ์งธ ์นด๋“œ๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

i ๋ณ€์ˆ˜๋Š” 0๋ถ€ํ„ฐ N-3๊นŒ์ง€ ๋ณ€ํ•œ๋‹ค. ์ด๋Š” ์ฒซ ๋ฒˆ์งธ ์นด๋“œ๊ฐ€ ์„ ํƒ๋œ ํ›„์—๋„ ๋‘ ๊ฐœ์˜ ์นด๋“œ๊ฐ€ ๋‚จ์•„์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ์ฒซ ๋ฒˆ์งธ ์นด๋“œ์˜ ์ธ๋ฑ์Šค๋ฅผ ์„ ํƒํ•œ๋‹ค.

 

2. ๋‘ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ (for j in range(i + 1, N - 1):):

์ด ๋ฐ˜๋ณต๋ฌธ์€ ๋‘ ๋ฒˆ์งธ ์นด๋“œ๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

j ๋ณ€์ˆ˜๋Š” i ๋‹ค์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ N-2๊นŒ์ง€ ๋ณ€ํ•œ๋‹ค. ์ด๋Š” ์ฒซ ๋ฒˆ์งธ ์นด๋“œ ๋‹ค์Œ๋ถ€ํ„ฐ ๋‘ ๋ฒˆ์งธ ์นด๋“œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

์ด ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ๋‘ ๋ฒˆ์งธ ์นด๋“œ์˜ ์ธ๋ฑ์Šค๋ฅผ ์„ ํƒํ•œ๋‹ค.

 

3. ์„ธ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ (for k in range(j + 1, N):):

์ด ๋ฐ˜๋ณต๋ฌธ์€ ์„ธ ๋ฒˆ์งธ ์นด๋“œ๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

k ๋ณ€์ˆ˜๋Š” j ๋‹ค์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ N-1๊นŒ์ง€ ๋ณ€ํ•œ๋‹ค. ์ด๋Š” ๋‘ ๋ฒˆ์งธ ์นด๋“œ ๋‹ค์Œ๋ถ€ํ„ฐ ์„ธ ๋ฒˆ์งธ ์นด๋“œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

์ด ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ์„ธ ๋ฒˆ์งธ ์นด๋“œ์˜ ์ธ๋ฑ์Šค๋ฅผ ์„ ํƒํ•œ๋‹ค.

 

 

โœ”๏ธ ์˜ˆ๋ฅผ ๋“ค๋ฉด...

์นด๋“œ ์ˆซ์ž: 5 6 7 8 9
M: 21

 

์ผ ๋•Œ,

 

1. ์ฒซ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ (์ฒซ ๋ฒˆ์งธ ์นด๋“œ ์„ ํƒ):

์ฒซ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ์—์„œ๋Š” ์ฒซ ๋ฒˆ์งธ ์นด๋“œ๋ฅผ ์„ ํƒํ•œ๋‹ค. ์ธ๋ฑ์Šค i๋Š” 0๋ถ€ํ„ฐ N-3๊นŒ์ง€ ๋ณ€ํ•œ๋‹ค.

์ด ๊ฒฝ์šฐ์—๋Š” 0๋ถ€ํ„ฐ 2๊นŒ์ง€์ด๋‹ค. ์ด์— ๋”ฐ๋ผ ์ฒซ ๋ฒˆ์งธ ์นด๋“œ๋Š” 5, 6, 7 ์„ธ ๊ฐœ ์ค‘์—์„œ ์„ ํƒ๋œ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ์—์„œ ์„ ํƒ๋œ ์นด๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋œ๋‹ค.

 

5 6 7

 

2. ๋‘ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ (๋‘ ๋ฒˆ์งธ ์นด๋“œ ์„ ํƒ):
๋‘ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ์—์„œ๋Š” ๋‘ ๋ฒˆ์งธ ์นด๋“œ๋ฅผ ์„ ํƒํ•œ๋‹ค. ์ธ๋ฑ์Šค j๋Š” i ๋‹ค์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ N-2๊นŒ์ง€ ๋ณ€ํ•œ๋‹ค.

์ด ๊ฒฝ์šฐ์—๋Š” i๊ฐ€ 0์ผ ๋•Œ 1๋ถ€ํ„ฐ 3๊นŒ์ง€, i๊ฐ€ 1์ผ ๋•Œ 2๋ถ€ํ„ฐ 4๊นŒ์ง€์ด๋‹ค. ์ด์— ๋”ฐ๋ผ ๋‘ ๋ฒˆ์งธ ์นด๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ํƒ๋œ๋‹ค:

 

i=0: 6, 7, 8

i=1: 7, 8, 9

 

3. ์„ธ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ (์„ธ ๋ฒˆ์งธ ์นด๋“œ ์„ ํƒ):

์„ธ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ์—์„œ๋Š” ์„ธ ๋ฒˆ์งธ ์นด๋“œ๋ฅผ ์„ ํƒํ•œ๋‹ค. ์ธ๋ฑ์Šค k๋Š” j ๋‹ค์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ N-1๊นŒ์ง€ ๋ณ€ํ•œ๋‹ค.

์ด ๊ฒฝ์šฐ์—๋Š” j๊ฐ€ 1์ผ ๋•Œ 2๋ถ€ํ„ฐ 4๊นŒ์ง€์ด๋‹ค. ์ด์— ๋”ฐ๋ผ ์„ธ ๋ฒˆ์งธ ์นด๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ํƒ๋œ๋‹ค:

 

i=0, j=1: 7, 8, 9

 

 

 

 

 


[2] ๋Š๋‚€ ์ 

 

๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด๋‹ˆ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ• ์ด์™ธ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ–ˆ๋Š”๋ฐ, ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ... ํŒŒ์ด์ฌ ๋‚ด์žฅํ•จ์ˆ˜์— ์ต์ˆ™ํ•˜์ง€ ์•Š์•„์„œ ์‚ฌ์šฉํ•˜์ง€ ๋ชป ํ•ด ์•„์‰ฝ๋‹ค.

์ด๋ฒˆ์—” ๋ฐ˜๋ณต๋ฌธ์„ ํ™œ์šฉํ•˜์—ฌ ํ’€์—ˆ์ง€๋งŒ, ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋†’์€ ํŽธ์ด๋ผ ๊ฒ€์‚ฌํ•˜๋Š” ์ˆซ์ž๊ฐ€ ์ปค์ง€๋ฉด ์•„์ฃผ ๋น„ํšจ์œจ์ ์ธ ์ฝ”๋“œ๊ฐ€ ๋  ๊ฒƒ ๊ฐ™๋‹ค.

1ํ•™๋…„ ๋‹น์‹œ์— ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ๋Š” ๋ฐ˜๋ณต๋ฌธ ๋ฒ”์œ„ ์„ค์ •์„ ์–ด๋ ค์›Œํ–ˆ์—ˆ๋Š”๋ฐ, ๊ทธ ๋ถ€๋ถ„์€ ์ข€ ๋‚˜์•„์ง„ ๊ฒƒ ๊ฐ™๋‹ค.