[Gold V] 캠프 준비 - 16938
성능 요약
메모리: 30840 KB, 시간: 100 ms
분류
백트래킹(backtracking), 비트마스킹(bitmask), 브루트포스 알고리즘(bruteforcing), 조합론(combinatorics), 수학(math)
문제 설명
알고리즘 캠프를 열려면 많은 준비가 필요하다. 그 중 가장 중요한 것은 문제이다. 오늘은 백준이를 도와 알고리즘 캠프에 사용할 문제를 고르려고 한다.
백준이는 문제를 N개 가지고 있고, 모든 문제의 난이도를 정수로 수치화했다. i번째 문제의 난이도는 Ai이다.
캠프에 사용할 문제는 두 문제 이상이어야 한다. 문제가 너무 어려우면 학생들이 멘붕에 빠지고, 문제가 너무 쉬우면 학생들이 실망에 빠지게 된다. 따라서, 문제 난이도의 합은 L보다 크거나 같고, R보다 작거나 같아야 한다. 또, 다양한 문제를 경험해보기 위해 가장 어려운 문제와 가장 쉬운 문제의 난이도 차이는 X보다 크거나 같아야 한다.
캠프에 사용할 문제를 고르는 방법의 수를 구해보자.
입력
첫째 줄에 N, L, R, X가 주어진다.
둘째 줄에는 문제의 난이도 A1, A2, ..., AN이 주어진다.
출력
캠프에 사용할 문제를 고르는 방법의 수를 출력한다.
가진 문제 수의 난이도를 가지고, 문제는 두 문제 이상을 골라야하기 때문에 문제 수의 난이도들을 2가지 이상을 선택하는 모든 경우의 수를 구해야한다. 구하는 방법은 조합을 사용하면 가능하다.
1.두 가지 ~ N가지 경우의 수를 조합(cb)으로 모든 경우를 구하여 반복문 j에 차례대로 담는다.
2.문제에서 원하는 조건을 if문에 모두 담아서 조건을 만족한다면 cnt += 1
3.cnt 출력.
'알고리즘' 카테고리의 다른 글
[Silver III] 파일 정리 - 20291 (문자열) (0) | 2022.08.04 |
---|---|
[Gold V] 전구와 스위치 - 2138 (그리디) (0) | 2022.08.03 |
[Silver I] 타일 위의 대각선 - 2168 (수학) (1) | 2022.08.01 |
[Gold IV] 로또 - 2758(dp) (0) | 2022.07.31 |
[Silver III] 서강근육맨 - 20300 (그리디,정렬) (1) | 2022.07.31 |