문제
PPL문제는 참신하네요..
두 조건을 만족하는 팀만 견학 할 수 있는데, 최대 몇 팀이나 견학을 보낼 수 있는지 구하면 된다. 팀원은 무조건 두명인 걸 보니 생각해볼 수 있는 알고리즘의 폭이 많이 줄어들 수 있다고 생각한다.
예제를 보자.
예제 1의 경우 6명이 있고 최소 능력치는 두명이 합쳐서 10이 넘어야 한다.
여기서 나오는 조합들 중 10이 넘는 조합들을 구하고, 최대로 보낼 수 있는 팀 수를 출력하면 된다.
const INPUT_FILE = process.platform === "linux" ? "/dev/stdin" : "./inputs.txt";
const inputs = require("fs")
.readFileSync(INPUT_FILE)
.toString()
.trim()
.split("\n");
const [n, m] = inputs[0].split(" ").map(Number);
const students = inputs[1]
.split(" ")
.map(Number)
.sort((a, b) => a - b);
let left = 0;
let right = n - 1;
let team = 0;
while (left < right) {
if (students[left] + students[right] >= m) {
team++;
left++;
right--;
} else {
left++;
continue;
}
}
console.log(team);어차피 한 번 참가한 팀원은 다시 참여할 수 없고, 무조건 두 명씩 팀을 해야 한다는 전제가 있기 때문에 간단하게 투포인터를 활용해서 풀 수 있었다.