본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 19939번 박 터뜨리기

by 현장 2022. 5. 8.

-Code

n, k = map(int, input().split())
min_total = k * (k + 1) // 2
if min_total > n:
    print(-1)

elif (n - min_total) % k == 0:
    print(k - 1)

else:
    print(k)

1부터 k까지의 합을 구하여 그 수보다 n이 작으면 -1이 되게 하고 그 수가 n보다 클 때 k로 나누어지면 값을 출력하는 것 까지는 생각을 했으나 합보다 n이 클 경우 무조건 k나 k-1이 되는데 k-1인 경우만 생각하고 다른 경우의 원리를 몰라서 해결을 못했었습니다. 그래서 해당 경우의 원리를 보니 제일 큰 수부터 1씩 더해지면 아무리 커도 k-1이 나오는 것을 알게 되어서 해결을 했습니다.