-
[백준 2798번] 블랙잭Algorithm/기타 2019. 11. 28. 22:26
백준알고리즘 2798번 : 블랙잭
배열에 3중 for문을 돌리고, break에 label을 이용하여 소요 시간을 줄이려고했으나,
그것은 다양한 경우의 수를 생각하지 못한 나의 불찰이었다.
따라서 나는 배열을 정렬하는 등의 헛짓을 했지만, 굳이 안해도 되겠다.
단순히 3중 for문을 이용하여, 모든 경우의 수를 돌려보면 된다..!
풀이 과정
1. 각 카드의 숫자들을 배열에 집어넣고, 3중 for문을 통해 이를 각각 뽑을 수 있도록 한다.
2. 미리 설정해둔 int 변수 T의 값을 조건문에 따라 바꿔준다.
조건문 : (arr[i]+arr[i2]+arr[i3]<=M && arr[i]+arr[i2]+arr[i3]>T)
→ 3장의 합이 딜러의 숫자 M보다 작거나 같고 && 기존 T보다 는 큰 경우
3. T를 출력한다.소스 ▽
더보기import java.util.Arrays; import java.util.Scanner; public class Main {// 2798번, 블랙잭 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int cardNum = sc.nextInt(); int max = sc.nextInt(); int [] arr = new int[cardNum]; for (int i = 0; i < cardNum; i++) { arr[i]=sc.nextInt(); } Arrays.sort(arr); int ans =0; for (int i = arr.length-1; i > 1; i--) { for (int j = i-1; j > 0; j--) { for (int j2 = j-1; j2 > -1; j2--) { if (arr[i]+arr[j]+arr[j2]>=ans && arr[i]+arr[j]+arr[j2]<=max) { ans=arr[i]+arr[j]+arr[j2]; } } } } System.out.println(ans); } }
Summary
1. 조건문 전에 " xxxx: " 과 같은 형태의 label을 삽입, 탈출을 원하는 지점에서
break xxxx; 과 같은 방식으로 loop를 빠져나올 수 있다.'Algorithm > 기타' 카테고리의 다른 글
[백준 17826번] 나의 학점은? (0) 2019.12.03 [백준 2869번] 달팽이는 올라가고 싶다 (0) 2019.11.30 [백준 1002번] 터렛 (0) 2019.11.27 [백준 13458번] 시험 감독 (0) 2019.11.26 [백준 2456번] 나는 학급회장이다 (0) 2019.11.23