반응형

문제

https://www.acmicpc.net/problem/19939

 

19939번: 박 터뜨리기

$N$개의 공을 $K$개의 바구니에 문제의 규칙을 만족하면서 나눠 담을 수 있다면, 가장 많이 담긴 바구니와 가장 적게 담긴 바구니의 공의 개수 차이를 출력한다. 나눠 담을 수 없는 경우에는 -1을

www.acmicpc.net

 

 

풀이

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n, k; //공, 바구니


    /*

    1 : 1
    2 : 3
    3 : 6
    4 : 10
    5 : 15
    6 : 21
    7 : 28

    */


    scanf("%d %d", &n, &k);

    int min;


    //isEnable ?
    min = k * (k+1) / 2;
    if(min > n){
        printf("-1");
        return 0;
    }


    if(k == 2){// 바구니가 2개일 때,
        if(n % 2 == 0) printf("2"); //공이 짝수면 ? 안됨
        else printf("1");//공이 홀수면 ? 1개
        return 0;
    }


    int diff;

//    k-1; // 갯수가 딱 맞는 경우
    n -= min;

    if(n%k == 0) diff = k-1;
    else diff = k;

    printf("%d", diff);





}



//    1 2 3 : 2
//    1 2 4 : 3
//    1 3 4 : 3

//    2 3 4 : 2
//    2 3 5 : 3
//    2 4 5 : 3

//    3 4 5 : 2
//
//
//    1 2 3 4 : 3
//    1 2 3 5 : 4
//    1 2 4 5 : 4
//    1 3 4 5 : 4
//    2 3 4 5 : 3
반응형

'개발 > 알고리즘' 카테고리의 다른 글

백준 2231 분해합  (0) 2021.06.02
백준 21758 꿀 따기 (2021 KOI )  (0) 2021.05.27
코드업 4877 방 배정하기  (0) 2021.04.26
프로그래머스 소수 만들기  (0) 2021.04.21
프로그래머스 소수 찾기  (0) 2021.04.21
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기