N, K = map(int, input().split())
if N >= (K*(K+1))/2:
if (N - ((K*(K+1))/2)) % K == 0:
print(K-1)
else:
print(K)
else:
print(-1)
어제 차례차례 대입해보며 규칙찾는 방법을 깨달아서 바로 적용했다.
바구니에 1개씩은 무조건 들어가야 하고 공의 개수가 모두 달라야하므로,
모든 바구니에 한개씩 담고 나머지를 다르게 분배했다.
우선 나눠 담을 수 있으려면 N이 1부터 K까지의 합보다 같거나 커야한다.
따라서 N >= ((K * (K+1)) / 2) 이면 K-1이라고 단정지었는데 예외가 있었다.
(N - ((K*(K+1))/2)) % K == 0 인 경우는 K-1이지만, 나누어 떨어지지 않는 경우도 있었다.
먼저 제출해보고 틀렸을 때 예외를 찾는게 좋을까, 꼼꼼하게 확인해보고 제출하는게 좋을까?