https://www.acmicpc.net/problem/2798
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net
C
#include <stdio.h>
int main() {
int n, m; //카드 갯수, 최대값
int cd[100]; //카드 번호
int sum = 0; //카드3장의 합
int max = 0; //현재까지의 최대값
//1.카드개수, 최대값 입력
scanf("%d %d", &n, &m);
//2.카드개수만큼 각 카드값 입력
for (int i = 0; i < n; i++) {
scanf("%d ", &cd[i]);
}
//3.i는 첫번째카드, j는 두번째카드, k는 세번째카드
for (int i = 0; i < n; i++) { //i는 0부터 시작(i=0)
for (int j = i+1; j < n; j++) { //j는 1부터 시작(j=i+1)
for (int k = j+1; k < n; k++) { //k는 2부터 시작(k=j+1)
//3-1.카드 3장 합하기
sum = cd[i] + cd[j] + cd[k];
//3-2. m값을 넘지 않으면서 이전까지 더한 값보다 큰 최대값 찾기
if (sum<=m && sum>max)
max = sum;
}
}
}
//4.카드3장 합의 최대값 출력
printf("%d ", max);
return 0;
}
java
package javastd1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class bj2798 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
//1. 카드개수, 최대값 입력
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
//2. 카드값 들어갈 배열
int[] cd = new int[n];
st = new StringTokenizer(br.readLine(), " ");
//3. 카드값 배열에 차례대로 삽입
for (int i = 0; i < n; i++) {
cd[i] = Integer.parseInt(st.nextToken());
}
//4.search함수로 최대값 찾기 실행
int max = search(cd, n, m);
//5.탐색된 최대값 출력
System.out.println(max);
}
static int search(int[] cd, int n, int m) {
int max = 0; //최종값이 들어갈 변수
//4-1. 1,2,3번째 카드 3개씩 더하면서
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
for (int k = j + 1; k < n; k++) {
int sum = cd[i] + cd[j] + cd[k];
//4-2.m보다 크지 않고 이전까지 더해진 값보다 큰 값 찾기
if(sum<=m && sum >max) {
max = sum;
}
}
}
}
return max;
}
}
두가지 모두 같은 알고리즘으로 해결! C와 java의 입력방식 차이밖에 없음!!
'공부하자 > 알고리즘' 카테고리의 다른 글
[백준] 1018번 체스판 다시 칠하기 C, java (0) | 2022.02.08 |
---|---|
[백준] 1436번 영화감독 숌 java (0) | 2022.01.27 |
[백준] 7568번 덩치 C, java (0) | 2022.01.25 |
[백준] 10757번 큰수 A + B C, java (0) | 2022.01.20 |
[백준] 10872번 팩토리얼 C, java (0) | 2022.01.20 |