# [Algorithm/JS] ๋ฐฑ์ค 2798๋ฒ ๋ธ๋์ญ
๐ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ (opens new window)
# Question
์นด์ง๋ ธ์์ ์ ์ผ ์ธ๊ธฐ ์๋ ๊ฒ์ ๋ธ๋์ญ์ ๊ท์น์ ์๋นํ ์ฝ๋ค. ์นด๋์ ํฉ์ด 21์ ๋์ง ์๋ ํ๋ ๋ด์์, ์นด๋์ ํฉ์ ์ต๋ํ ํฌ๊ฒ ๋ง๋๋ ๊ฒ์์ด๋ค. ๋ธ๋์ญ์ ์นด์ง๋ ธ๋ง๋ค ๋ค์ํ ๊ท์ ์ด ์๋ค.
ํ๊ตญ ์ต๊ณ ์ ๋ธ๋์ญ ๊ณ ์ ๊น์ ์ธ์ ์๋ก์ด ๋ธ๋์ญ ๊ท์น์ ๋ง๋ค์ด ์๊ทผ, ์ฐฝ์์ด์ ๊ฒ์ํ๋ ค๊ณ ํ๋ค.
๊น์ ์ธ ๋ฒ์ ์ ๋ธ๋์ญ์์ ๊ฐ ์นด๋์๋ ์์ ์ ์๊ฐ ์ฐ์ฌ ์๋ค. ๊ทธ ๋ค์, ๋๋ฌ๋ N์ฅ์ ์นด๋๋ฅผ ๋ชจ๋ ์ซ์๊ฐ ๋ณด์ด๋๋ก ๋ฐ๋ฅ์ ๋๋๋ค. ๊ทธ๋ฐ ํ์ ๋๋ฌ๋ ์ซ์ M์ ํฌ๊ฒ ์ธ์น๋ค.
์ด์ ํ๋ ์ด์ด๋ ์ ํ๋ ์๊ฐ ์์ N์ฅ์ ์นด๋ ์ค์์ 3์ฅ์ ์นด๋๋ฅผ ๊ณจ๋ผ์ผ ํ๋ค. ๋ธ๋์ญ ๋ณํ ๊ฒ์์ด๊ธฐ ๋๋ฌธ์, ํ๋ ์ด์ด๊ฐ ๊ณ ๋ฅธ ์นด๋์ ํฉ์ M์ ๋์ง ์์ผ๋ฉด์ M๊ณผ ์ต๋ํ ๊ฐ๊น๊ฒ ๋ง๋ค์ด์ผ ํ๋ค.
N์ฅ์ ์นด๋์ ์จ์ ธ ์๋ ์ซ์๊ฐ ์ฃผ์ด์ก์ ๋, M์ ๋์ง ์์ผ๋ฉด์ M์ ์ต๋ํ ๊ฐ๊น์ด ์นด๋ 3์ฅ์ ํฉ์ ๊ตฌํด ์ถ๋ ฅํ์์ค.
# Input
์ฒซ์งธ ์ค์ ์นด๋์ ๊ฐ์ N(3 โค N โค 100)๊ณผ M(10 โค M โค 300,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ์นด๋์ ์ฐ์ฌ ์๋ ์๊ฐ ์ฃผ์ด์ง๋ฉฐ, ์ด ๊ฐ์ 100,000์ ๋์ง ์๋ ์์ ์ ์์ด๋ค.
ํฉ์ด M์ ๋์ง ์๋ ์นด๋ 3์ฅ์ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ๋ง ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
# Output
์ฒซ์งธ ์ค์ M์ ๋์ง ์์ผ๋ฉด์ M์ ์ต๋ํ ๊ฐ๊น์ด ์นด๋ 3์ฅ์ ํฉ์ ์ถ๋ ฅํ๋ค.
# Example
# Input 1
5 21
5 6 7 8 9
2
# Output 1
21
# Input 2
10 500
93 181 245 214 315 36 185 138 216 295
2
# Output 2
497
# Solution
const fs = require('fs');
const [N, M, ...numbers] = fs.readFileSync('dev/stdin').toString().trim().split(/\s+/);
const nums = numbers.map(Number);
const nums_arr = [];
for (let i = 0; i < N; i++) {
for (let j = i + 1; j < N; j++) {
for (let k = j + 1; k < N; k++) {
const sum = nums[i] + nums[j] + nums[k];
if (sum <= M) {
nums_arr.push(sum);
}
}
}
}
console.log(Math.max(...nums_arr));
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/\s+/
๋ ๋ชจ๋ ๊ณต๋ฐฑ์ ์์ ๋ ์ ๊ท์์ด๋ค.
์ผ์ค ๋ฐ๋ณต๋ฌธ์ ํตํด ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฒดํฌ ํ ์ ์๋ค.
๋จ, j ์ k ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐ๋ณต๋ฌธ์ ์์ ์ ์ ์์ ๋ฐ๋ณต๋ฌธ๋ณด๋ค + 1์ด ๋์ด์ผ ํ๋ฉฐ, ๊ทธ๋ ์ง ์์๊ฒฝ์ฐ ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฒดํฌํด์ผํ๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด๊ณผ๊ธฐ ์ผ์ด๋ ์ ์๋ค. ๋๋ ์ด๋ฏธ ์ฒดํฌํ ์๋ฅผ ๋ ์ฒดํฌํ ์ ์๋ค.\
์ธ๊ฐ์ ์๋ฅผ ํฉํ ๊ฐ๋ค์ nums_arr
๋ฐฐ์ด์ ์ ์ฅํด ์ต์ข
์ ์ผ๋ก ์ต๋๊ฐ์ ๋ฐํํ๋ Math.max
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
โ 2447๋ฒ ๋ณ ์ฐ๊ธฐ 2231๋ฒ ๋ถํดํฉ โ