티스토리 뷰

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

 

2295번: 세 수의 합

우리가 x번째 수, y번째 수, z번째 수를 더해서 k번째 수를 만들었다라고 하자. 위의 예제에서 2+3+5=10의 경우는 x, y, z, k가 차례로 1, 2, 3, 4가 되며, 최적해의 경우는 2, 3, 4, 5가 된다. k번째 수가 최

www.acmicpc.net

 

 

let input = require('fs').readFileSync('./dev/stdin').toString().trim().split('\n').map(Number);
const N = input.shift();
const xySet = new Set();
input = input.sort((a, b) => a - b);
for (let i = 0; i < N - 1; i++) {
	for (let j = 0; j < N - 1; j++) {
		const x = input[i];
		const y = input[j];
		xySet.add(x + y);
	}
}

const xyArr = [...xySet].sort((a, b) => a - b);
for (let i = N - 1; i > 0; i--) {
	for (let j = 0; j <= i; j++) {
		const k = input[i];
		const z = input[j];
		const target = k - z;
		let left = 0;
		let right = xyArr.length - 1;
		while (left <= right) {
			const mid = Math.floor((right + left) / 2);

			const maybe = xyArr[mid];
			if (target == maybe) {
				console.log(k);
				process.exit();
			} else {
				if (target < maybe) {
					right = mid - 1;
				} else {
					left = mid + 1;
				}
			}
		}
	}
}
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함