알고리즘/백준
BOJ) 블랙잭
Zin0_0
2020. 6. 23. 13:33
반응형
블랙잭
2798번: 블랙잭
문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 ��
www.acmicpc.net
풀이
dp로 풀까 생각하다가, 고려할 사항이 많아질 것 같아서 모든 경우에 따라 최대 값을 구하기로 했다.
앞에서 부터 3장의 카드를 고르고, 해당 숫자가 m 이하일 경우에 최대 값을 갱신해줬다.
3중 포문은 돌리기 싫었지만, 좋은 방법이 떠오르지 않았다.. ㅠㅠ
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BlackJack_2798 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int[] cardArr = new int[Integer.parseInt(st.nextToken())];
int m = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
for(int i=0; i<cardArr.length; i++) {
cardArr[i] = Integer.parseInt(st.nextToken());
}
System.out.println(solution(cardArr, m));
br.close();
}
private static int solution(int[] cardArr, int m) {
int answer =0;
for(int i=0; i<cardArr.length-2; i++) {
for(int j=i+1; j<cardArr.length-1; j++) {
for(int k=j+1; k<cardArr.length; k++) {
int sum =cardArr[i] + cardArr[j] + cardArr[k];
if(sum <= m) {
answer = Math.max(answer, sum);
}
}
}
}
return answer;
}
}
반응형