BOJ 2798 블랙잭

이준희·2021년 11월 18일
0

알고리즘

목록 보기
2/2
post-thumbnail

BOJ 문제 바로가기

문제 제목: 블랙잭
문제 난이도: 하
문제 유형: 배열, 완전 탐색
추천 풀이 시간: 20분

첫 번째 인풋 N, M
두 번째 인풋 N에 해당하는 카드 배열

첫 풀이

  • 첫 번째 예제의 경우 5C3 5개중에 3개를 선택하는 경우이다

  • 완전 탐색을 통해 m (max) 값을 넘지 않는 선에서 반복문을 돌며 최대값을 answer에 저장한다.

  • 이후에 완전히 순회하면서 기존 answer 보다 해당 반복문이 가지는 answer가 큰 경우 max() 함수를 통해 더 큰 값을 answer에 재할당

  • 이후 반복문을 빠져나와 answer를 print()

n, m = list(map(int, input().split(' ')))
arr = list(map(int, input().split(' ')))

answer = 0
length = len(arr)

print('n=', n, 'max=', m)
print('arr=', arr)

# 3개를 골라야 함 5C3
for i in range(0, length):
    for j in range(i+1, length):
        for k in range(j+1, length):
            sum = arr[i] + arr[j] + arr[k]
            if sum <= m:
                answer = max(answer, sum)

print(answer)

결과

Why?

VS code 환경에서 input에 담기는 값을 확인하기 위해 print를 찍어봤는데, 이를 주석처리하지 않고 진행하다가 블로킹 되었다

백준은 에디터가 틀렸을 때 어디서 틀렸는지 알려주질 않는게 아쉽군요

풀이

n, m = list(map(int, input().split(' ')))
arr = list(map(int, input().split(' ')))

answer = 0
length = len(arr)

# 주석처리
# print('n=', n, 'max=', m)
# print('arr=', arr)

# 3개를 골라야 함 5C3
for i in range(0, length):
    for j in range(i+1, length):
        for k in range(j+1, length):
            sum = arr[i] + arr[j] + arr[k]
            if sum <= m:
                answer = max(answer, sum)

print(answer)
profile
https://junheedot.tistory.com/ 이후 글 작성은 티스토리에서 보실 수 있습니다.

0개의 댓글