[백준] 2798 블랙잭

cheeeese·2022년 4월 3일
0

코딩테스트 연습

목록 보기
77/151
post-thumbnail

📖 문제

https://www.acmicpc.net/problem/2798

💻 내 코드

n, m=map(int, input().split())
num=list(map(int, input().split()))
res=0

for i in range(0, len(num)-2):
    for j in range(i+1, len(num)-1):
        for k in range(j+1, len(num)):
            s=num[i]+num[j]+num[k]
            if s>m:
                continue
            else:
                res=max(res, s)
print(res)

💡 풀이 및 다른 코드

  • 입력된 수들을 for문을 통해 하나씩 더해보면서 최대를 구해준다
  • 더했을 때 m보다 크다면 continue 아니라면 이전에 최대로 저장된 수와 비교하여 최대 구하기

다른 사람 코드

from itertools import combinations

n,m=map(int, input().split())
num=list(map(int, input().split()))
res=0

for c in combinations(num, 3):
	tmp=sum(c)
    if res<tmp<=m:
    	res=tmp
print(res)
  • itertools의 combinations 사용
    • 조합
    • 리스트에서 중복되지 않는 3개의 원소의 조합을 구할 수 있음

0개의 댓글