https://www.acmicpc.net/problem/2798
1. 아이디어
N이 최대 100이므로 3장을 뽑는 3중 for문을 활용한 브루트포스 알고리즘으로 해결할 수 있다.
2. 문제풀이
카드를 입력받은 후 정렬을 해서 반복문 중간에 3장의 합이 M보다 커지면 반복문을 종료하도록 구현했다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[] arr = new int[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
int ans = 0;
for (int i = 0; i < N - 2; i++) {
for (int j = i + 1; j < N - 1; j++) {
for (int k = j + 1; k < N; k++) {
int sum = arr[i] + arr[j] + arr[k];
if (sum <= M) ans = Math.max(ans, sum);
else break;
}
}
}
System.out.println(ans);
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 31859번 - SMUPC NAME [Java] (0) | 2025.01.16 |
---|---|
[백준] 1977번 - 완전제곱수 [Java] (0) | 2025.01.16 |
[백준] 1354번 - 무한 수열 2 [Java] (0) | 2025.01.16 |
[백준] 10189번 - Hook [Java] (1) | 2025.01.15 |
[백준] 24900번 - 한별 찍기 [Java] (0) | 2025.01.15 |