2798번 블랙잭

junsangyu·2021년 2월 20일
0

BaekJoon

목록 보기
1/2

틀린 이유

카드 3개 합이 M보다 작을때만 조건을 확인하지 않아서

맞왜틀 코드

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

int main() {
  int n, m;
  int min = INT_MAX;
  scanf("%d %d", &n, &m);
  int *arr = (int*)malloc(sizeof(int) * n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &arr[i]);
  }
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n; j++) {
      for (int k = j + 1; k < n; k++) {
        if (abs(m - (arr[i] + arr[j] + arr[k])) < abs(min)) {
          min = m - (arr[i] + arr[j] + arr[k]);
        }
      }
    }
  }
  printf("%d", m - abs(min));
  free(arr);
  return 0;
}

정답

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

int main() {
  int n, m;
  int min = INT_MAX;
  scanf("%d %d", &n, &m);
  int *arr = (int*)malloc(sizeof(int) * n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &arr[i]);
  }
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n; j++) {
      for (int k = j + 1; k < n; k++) {
        if (arr[i] + arr[j] + arr[k] <= m && m - (arr[i] + arr[j] + arr[k]) < min) min = m - (arr[i] + arr[j] + arr[k]);
      }
    }
  }
  printf("%d", m - min);
  free(arr);
  return 0;
}
profile
👨🏻‍💻

0개의 댓글