[BOJ 22857] 가장 긴 짝수 연속한 부분 수열

챠밍·2022년 2월 25일
0

알고리즘 공부

목록 보기
1/3
post-thumbnail

DP공부를 하던 중 처음으로 실버에서 막혔다. 약 1시간정도 고민했는데 못풀고 구글링을 해보니 구글에도 파이썬 풀이는 나오지 않더라 .. 결국 자바 메커니즘 보고 해결! 한 번 안보이면 끝까지 안보이더라ㅋㅋㅋㅠㅠ 혹시 나같은 사람을 위해 벨로그에 풀이를 남긴다!

< 풀이 >

n, k = map(int, input().split())
s = [0] + list(map(int, input().split()))
dp = [[0 for _ in range(k+1)] for _ in range(n+1)]

for i in range(1, n+1):
    s[i] %= 2
    for j in range(k+1):
        if s[i] == 0: #짝수일 때
            dp[i][j] = dp[i-1][j] + 1
        if j != 0 and s[i]: #홀수일 때 
            dp[i][j] = dp[i-1][j-1]
            
result = []
for i in dp:
    result.append(i[k])

print(max(result))
profile
SW developer

1개의 댓글

comment-user-thumbnail
2023년 5월 3일

도움이 많이 되었습니다! 감사합니다.

답글 달기