본문 바로가기
알고리즘 문제

백준 19939

by hyunjing0 2021. 3. 9.
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이지만, 나누어 떨어지지 않는 경우도 있었다.

먼저 제출해보고 틀렸을 때 예외를 찾는게 좋을까, 꼼꼼하게 확인해보고 제출하는게 좋을까?

'알고리즘 문제' 카테고리의 다른 글

백준 20937  (0) 2021.03.11
백준 2847  (0) 2021.03.11
백준 13305  (0) 2021.03.09
백준 1783  (0) 2021.03.07
백준 1439  (0) 2021.03.06