const fs = require("fs");
const input = fs
.readFileSync("/dev/stdin")
.toString()
.trim()
.split(" ")
.map(Number);
const [ball, team] = input;
let sum = 0;
for (let i = 1; i <= team; i++) {
sum += i;
}
if (sum > ball) {
console.log(-1);
} else {
if (ball % sum === 0) {
console.log(team - 1);
} else {
console.log(team);
}
}
만약 ball이 15이고 team이 5라면, 1 2 3 4 5
만약 ball이 16이고 team이 5라면, 1 2 3 4 6
만약 ball이 17이고 team이 5라면, 1 2 3 5 6
가 된다.
즉 공의 갯수 차이는 team 갯수이거나, team 에서 1인 뺀 값이다.
처음에는 해당 길이만큼 배열을 만들어주고, 1씩 더해주면 값을 최소한으로 할수 있지 않나? 생각했었지만, 서로의 값이 전부 다 달라야하기때문에 1부터 차근차근 더해주는것이 결국 최소의 차이를 만드는것이다.