반응형
문제
https://www.acmicpc.net/problem/19939
풀이
#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 |
최근댓글