๐ 33 - K๋ฒ์งธ ํฐ ์
100์ฅ์ ์นด๋ ์ค 3์ฅ์ ๋ฝ๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ 100C3
์ด๋ฏ๋ก 161,700
์ด๋ค. ์ฌ๊ธฐ์ 3์ฅ์ ๋ฝ์ ๊ฐ ์นด๋์ ์ ํ ์๋ฅผ ํฉํ๋ ค๋ฉด 3 ์ค๋ฐ ๋ณต๋ฌธ์ผ๋ก bruteForce
๋ก ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋๋ ค๋ณด๋ฉด ๋๋ค. ์ด ๋ฌธ์ ์ ์๊ฐ๋ณต์ก๋๋ ๋คํญ ์๊ฐ์ธ O(N^3)
์ด์ง๋ง N=100
์ผ๋ ์ต๋ 1,000,000
๋ฒ ์ํํ๋ฏ๋ก ์๊ฐ ์ด๊ณผ์ ๊ฑธ๋ฆฌ์ง ์๋๋ค. (๋ณดํต ๋ฐ๋ณต๋ฌธ์ ๋ ๋ 1์ด๋น ์ต๋ 10^8
(์ฝ 1์ต๋ฒ) ๋ ์ ์์ผ๋ฏ๋ก, N=100
์ผ๋๋ O(N^4)
๊น์ง๋ ์ปค๋ฒ ๊ฐ๋ฅํ๋ค.)
๋, ๊ฐ์์์๋ 3์ค ๋ฐ๋ณต๋ฌธ์ i, j, k
์ ๋ฒ์๋ฅผ ๋ชจ๋ n
๊น์ง๋ก ์ค์ ํ๋๋ฐ, ๋งจ ๋ง์ง๋ง์์ k
๊ฐ n
์ ๋ฒ์ด๋๋ฉด ๋ฐ๋ณต๋ฌธ์ ๋ค์ง ์๊ณ , ๋ง์ฐฌ๊ฐ์ง๋ก j
๊ฐ n
์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๋ฐ๋ณต๋ฌธ์ ๋ค์ง ์๊ธฐ ๋๋ฌธ์ ์๋์ ์ผ๋ก ์ข
๋ฃ๋๋ค๊ณ ๋ง์ํ์
จ๋ค. ๋๋ ์กฐ๊ธ์ด๋ผ๋ ๋ถ ํ์ํ ์ฐ์ฐ์ ์ค์ด๊ธฐ ์ํด ๋ฐ๋ณต๋ฌธ์ ๋ฒ์๋ฅผ n-2
, n-1
, n
๊น์ง๋ก ์ค์ ํ๋ค.
// ๋์ ์ฝ๋
let arr = [13, 15, 34, 23, 45, 65, 33, 11, 26, 42];
let target = 3;
let n = 10;
console.log(solution(n, target, arr))
function solution(n, target, arr){
let answer = [...new Set([])];
for (let i=0; i<n-2; i++){
for (let j=i+1; j<n-1; j++){
for (let k=j+1; k<n; k++){
answer.push(arr[i] + arr[j] + arr[k]);
}
}
}
answer = answer.sort((a, b) => b - a);
return answer[target-1];
}
// ๊ฐ์ฌ๋ ์ฝ๋
let arr = [13, 15, 34, 23, 45, 65, 33, 11, 26, 42];
let target = 3;
let n = 10;
console.log(solution(n, target, arr))
function solution(n, k, arr) {
let ans = new Set();
for (let i = 0; i < n - 2; i++) {
for (let j = i + 1; j < n - 1; j++) {
for (let k = j + 1; k < n; k++) {
ans.add(arr[i] + arr[j] + arr[k]);
}
}
}
ans = Array.from(ans).sort((a, b) => b - a);
return ans[k - 1];
}
๋๊ธ