2798번: 블랙잭

임성빈·2022년 1월 17일
0

백준 문제풀이

목록 보기
1/10
post-thumbnail

import sys
input = sys.stdin.readline

n,m = map(int,input().split())

card = list(map(int,input().split()))
l = len(card)
anw = 0

for i in range(l):
  for j in range(l):
    if i == j:
      continue
    for k in range(l):
      if k == i or k == j:
        continue
      sum = card[i] + card[j] + card[k]
      if sum > m:
        continue
      elif sum > anw:
        anw = sum
print(anw)

카드 리스트에서 만들어질 수 있는 카드 3장의 합을 모두 확인하기 위해 무식하게 반복문 3번을 사용해주는 방법을 선택했다.

이제는 거의 습관이 되어버린 sys...

n,m 에 카드의 개수와 가까워야할 수 m을 받아준다.

card 라는 리스트를 만들어 둘째 줄 카드에 들어갈 수를 넣어주고 반복문에 사용될 반복범위를 설정할 카드의 길이 l을 만들어준다.

anw 은 카드 세 장의 합을 넣어 줄 것이다.

if 로 같은 카드는 더하지 않게 설정을 해주고
다시 if 로 3장의 카드의 합이 m을 초과하면 버리고 이전의 anw 보다 클 경우 anw 를 지금의 3장의 합으로 바꿔준다.

이렇게하면 카드 리스트 안 3장의 카드의 합이 m을 초과하지 않으면서 m과 같거나 가장 가까운 수가 될 겉이다.

(모든 숏코딩은 볼 수 없도록 되어있습니다. 궁금하시분은 댓글 달아주시면 보내드리겠습니다.)

문제를 단순히 풀기만 하는게 아니라 생각을 글로 적다보니 아이디어가 떠올라 숏코딩에 도전해 보았다.

코딩을 짧게 한다고 잘하는 건 아니지만 나한테 있어서 숏코딩은 재미있고 지속적인 흥미를 느끼게 해준다.

profile
iOS 앱개발

0개의 댓글

관련 채용 정보