728x90
입력 조건
- 배열의 크기 N, 숫자가 더해지는 횟수 M, K번 초과 불가
- 첫째 줄에 N(2 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), K(1 ≤ K ≤ 10,000)의 자연수가 주어지며, 각 자연수는 공백으로 구분한다.
- 둘째 줄에 N개의 자연수가 주어진다. 각 자연수는 공백으로 구분한다. 단, 각각의 자연수는 1 이상 10,000 이하의 수로 주어진다.
- 입력으로 주어지는 K는 항상 M보다 작거나 같다.
출력 조건
- 첫째 줄에 큰 수의 법칙에 따라 더해진 답을 출력한다.
입력 예시
5 8 3
2 4 5 4 6
출력 예시
46
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//N: 배열의 크기, M번 더하기 연산, 특정 인덱스 '연속' K번 초과 연산 불가
int size = sc.nextInt();
int count = sc.nextInt();
int limit = sc.nextInt();
//N개의 자연수
int[] num = new int[size];
for (int i = 0; i < size; i++) {
num[i] = sc.nextInt();
}
Arrays.sort(num);
//배열 num의 가장 큰 값들을 꺼내 M번 더하되, 같은 인덱스에 대한 연속적 연산을 K번 초과할 수 없다.
int result = 0;
int tempLimit = 0;
for (int i = 0; i < count; i++) {
int idx = size - (tempLimit++ <= limit ? 1 : 2);
result += num[idx];
if (idx == size-2) {
tempLimit = limit;
}
}
System.out.println(result);
}
}728x90
'○ 기술면접 > 알고리즘' 카테고리의 다른 글
| 구현: Hello World (백준 2557) (0) | 2023.03.21 |
|---|---|
| 그리디: 보물 (백준 1026) (0) | 2023.03.21 |
| [알고리즘] 구현: 피지컬로 승부하라 (0) | 2023.03.20 |
| 그리디: 잃어버린 괄호 (백준 1541) (0) | 2023.03.20 |
| 그리디: 동전0 (백준 11047) (0) | 2023.03.20 |
| 그리디: ATM (백준 11399) (0) | 2023.03.20 |
| [알고리즘] 그리디(Greedy): 지금 당장 좋은 것만 선택하라 (0) | 2023.03.18 |
| 복잡도(Complexity): 알고리즘의 성능을 나타내는 척도 (0) | 2023.03.18 |