#include int main(void) { long long int sum = 0; //전체 나무의 크기 - 반드시 1만큼 자라는 물뿌리개 횟수 int one = 0; //반드시 1만큼 자라는 물뿌리개 횟수 int tmp = 0; int n; scanf("%d", &n); for(int i = 0; i sum) { //1만큼 자라는 물뿌리개를 더 많이 뿌릴수는 없다. printf("NO"); return 0; } sum -= one*2; //1만큼 자라는 물뿌리개와 2만큼 자라는 물뿌리개의 개수는 동등하다. if(sum%3==0) printf("YES"); 물뿌리개로 한번에 3만큼의 나무의 키를 늘린다. else printf("NO"); } 풀이 : 1 증가 물뿌리개 횟수 == 2 증가 물뿌리개 횟수..
#include #include int main(void) { char s[1005] = {}; char t[1005] = {}; scanf("%s", s); scanf("%s", t); int s_len = strlen(s); int t_len = strlen(t); for(int i = t_len-1; i>s_len-1; i--) { //t->s 로 맨 뒤를 제거하면서 if(t[i] == 'B') { //마지막이 B이면 앞에 것을 뒤집기 t[i] = 0; //마지막거 지우기 char tmp[1005] = {}; for(int j = 0; j
#include int main(void) { long long int x, t; scanf("%lld %lld", &x, &t); //single 0>1, 0>4, 0>8 if(t >= x) { printf("1\n%lld 1", t-x); return 0; } if(t >= x/4 && x%4 == 0) { printf("1\n%lld 4", t-x/4); return 0; } if(t >= x/8 && x%8 == 0) { printf("1\n%lld 8", t-x/8); return 0; } //double 0>4>1, 0>8>1, 0>8>4 if(t >= x/4+x%4) { printf("2\n%lld 4\n", t-x/4-x%4); printf("%lld 1", t-x%4); return 0;..
#include #include long int n, k; int cnt = 0; void loop(long int max, long int num, int a[], int b[]) { if(num == 0) { for(int i = 0; i0; j--) { long int tmp = num-j; if(tmp >=0) { b[cnt++] = j+1; a[j] = 0; loop(max-1, tmp, a, b); } } if(num > 0 && j==0) { printf("-1"); exit(0); } } int main(void) { scanf("%ld %ld", &n, &k); int a[n]; int b[n]; for(int i = 0; i 17505번: 링고와 순열 링고는 1이상 N이하의 정수가 한 ..
- Total
- Today
- Yesterday
- 누적합
- 기하학
- DFS
- DP
- 브루트포스
- Segment Tree
- 최대공약수
- union
- 덱
- C언어
- BFS
- 스택
- 세그먼트 트리
- 1835
- Krustal
- 백준
- 플로이드
- 그리디
- java
- XOR
- Lazy Propagation
- C++
- 그래프
- 정렬
- 오프라인 쿼리
- PASCAL
- 1835번
- 누적 합
- 최소 스패닝 트리
- find
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |