기술

블랙잭 - 백준2798번

기술 공간 2021. 4. 5. 02:34
#백준2798번

n,m=map(int,input().split())
lst=[]
for i in input().split():
    lst.append(int(i))
#입력받은 n의 크기에 상관없이 더 큰 크기의 리스트를 만들수 있음

front=0
mid=1
back=2
lst2=[]

while(back<=n-1):
    while(mid<=back-1):
        while(front<=mid-1):
            lst2.append(lst[front]+lst[mid]+lst[back])
            front=front+1
        front=0
        mid=mid+1
    mid=1
    back=back+1

lst2.sort()
maxValue=lst2[0]
for i in range(1,len(lst2)):
    if lst2[i]>m: break
    if lst2[i]>maxValue:
        maxValue=lst2[i]
print(maxValue)






#백준2798번 다른풀이

n,m=map(int,input().split())
lst=list(map(int,input().strip().split()))[:n]#입력받은 n의 크기 만큼만 리스트를 만듬

#--------------------이 밑으로는 위와 동일한 코드
front=0
mid=1
back=2
lst2=[]

while(back<=n-1):
    while(mid<=back-1):
        while(front<=mid-1):
            lst2.append(lst[front]+lst[mid]+lst[back])
            front=front+1
        front=0
        mid=mid+1
    mid=1
    back=back+1

lst2.sort()
maxValue=lst2[0]
for i in range(1,len(lst2)):
    if lst2[i]>m: break
    if lst2[i]>maxValue:
        maxValue=lst2[i]
print(maxValue)






#백준2798번 다른풀이2(다른사람풀이)
def P(n,m,c):
	t=set()
	for i in range(n-2):
		for o in range(i+1,n-1):
			for p in range(o+1,n):
				s=c[i]+c[o]+c[p]
				if s<=m:
					t.add(s)
					break

	return max([*t])
print(P(*map(int,input().split()),list(sorted(map(int,input().split()))[::-1])))

'기술' 카테고리의 다른 글

팰린드롬수 - 백준1259번  (0) 2021.04.05
직사각형에서 탈출 - 백준1085번  (0) 2021.04.05
이항계수1 - 백준11050번  (0) 2021.04.05
달팽이는 올라가고 싶다 - 백준2869번  (0) 2021.04.05
ACM호텔 - 백준10250번  (0) 2021.04.05