3/4_FAIL의 기록
아직 통과하지 못한 코드이다.
답은 나오는데 통과가 되질 않는다.
컴퓨터는 잘못이 없으니 내가 무엇인가를 잘못한거겠지😥
테스트 케이스가 한개밖에 공개되지 않아서 어디서 틀렸는지도 모르겠다 ㅠㅠ
아 뭐 하나만 바꾸면 될 거 같은데... 뭘 놓치고 있나
def f(n, k, m, summ): # 순열의 n번 원소 결정, 순열의 길이 k, 사용할 숫자 m개
global max_val, M
if summ > M:
return
if n == k:
if summ >= max_val:
max_val = summ
else:
for i in range(m):
if used[i]==0: # i번 원소가 사용되지 않았으면
used[i] = 1 # 사용함으로 표시
# p[n] = cards[i]
f(n+1, k, m, summ+cards[i]) # n+1원소 결정
used[i] = 0 # 다른 자리에서 사용하도록 풀어줌
N, M = map(int, input().split())
cards = list(map(int, input().split()))
used = [0]*N
p = [0]*3
max_val = 0
f(0,3,5,0)
print(max_val)
4/10_PASS
나는 바보였당ㅋㅋㅋㅋㅋf(0,3,5,0)
이라고 카드 숫자를 5로 지정해놓으니까 테스트케이스말고는 통과를 못하지ㅜㅠㅠf(0,3,n,0)
로 바꾸고 기분 좋게 통과!
fail한 문제를 pass로 넘길때 너무 신나.
테스트케이스가 하나 더 추가되어있었는데 덕분에 실수를 알아차릴 수 있었다.
행복하다.
def f(n, k, m, summ): # 몇번째 원소를 뽑는지, 총 몇개를, 몇개 안에서
global maxV, wanted
if summ > wanted:
return
if n == k:
if maxV < summ:
maxV = summ
else:
for i in range(m):
if used[i] == 0:
used[i] = 1
p[n] = cards[i]
f(n+1, k, m, summ+cards[i])
used[i] = 0
n, wanted = map(int, input().split())
cards = list(map(int, input().split()))
used = [0]*n
p = [0]*3
maxV = 0
# n장 중 3장을 뽑는 경우의 수
f(0, 3, n, 0)
print(maxV)
22/2/6_pythonic_PASS
오랜만에 풀어보는 알고리즘~ 기록하자! 하고 블로그에 글쓰려니 이전에 써놨던 풀이법이 있넹... 파이써닉한 풀이법도 기록한다.
from itertools import combinations
N, M = map(int, input().split())
nums = list(map(int, input().split()))
comb = list(combinations(nums, 3))
maxx = 0
for c in comb:
summ = sum(c)
if summ == M: # 값이 M과 같다면 즉시 loop 빠져나오기
maxx = M
break
if summ > M:
continue
else:
if maxx < summ:
maxx = summ
print(maxx)
'Algorithm problem solving > 풀이' 카테고리의 다른 글
4835. 구간합 (0) | 2020.03.09 |
---|---|
4828. min max (0) | 2020.03.09 |
[SW Expert Academy] 파이썬 기초2_객체지향 ( 6203~ 6229 ) (0) | 2020.03.01 |
[SW Expert Academy] 파이썬 기초2_딕셔너리 ( 6259~ 6262 ) (0) | 2020.03.01 |
[SW Expert Academy] 파이썬 기초2_딕셔너리 ( 6254~ 6258 ) (0) | 2020.02.29 |