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ํ๋ ๋น์์ ์ฝ๋๋ฅผ ์งค ๋๋ ๋ฐ๋ณต๋ฌธ ๋ฒ์ ์ค์ ์ ์ด๋ ค์ํ์๋๋ฐ, ๊ทธ ๋ถ๋ถ์ ์ข ๋์์ง ๊ฒ ๊ฐ๋ค.
'SWLUG > ๋ฐฑ์ค BEAKJOON' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C/๋ฐฑ์ค] 9184๋ฒ: ์ ๋๋ ํจ์ ์คํ (0) | 2024.09.25 |
---|---|
[BAEKJOON/ ๋ฐฑ์ค] 2231๋ฒ: ๋ถํดํฉ (0) | 2024.05.08 |
[BAEKJOON/๋ฐฑ์ค] 2775๋ฒ: ๋ถ๋ ํ์ฅ์ด ๋ ํ ์ผ (0) | 2024.05.01 |
[BAEKJOON/๋ฐฑ์ค] 9095๋ฒ: 1, 2, 3 ๋ํ๊ธฐ (0) | 2024.05.01 |
[BAEKJOON/ ๋ฐฑ์ค] 1520๋ฒ: ๋ด๋ฆฌ๋ง ๊ธธ (Python) (1) | 2024.04.02 |