Skip to content

Commit

Permalink
.
Browse files Browse the repository at this point in the history
  • Loading branch information
ssw6750 committed Oct 5, 2022
1 parent ad71bad commit 83ef0af
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 23 deletions.
14 changes: 14 additions & 0 deletions 백준/동적계획법/11053.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import sys
input = sys.stdin.readline

n = int(input())
ar = list(map(int, input().split()))

dp = [1 for _ in range(n)]

for i in range(n):
for j in range(i):
if ar[i] > ar[j]:
dp[i] = max(dp[i], dp[j]+1)

print(max(dp))
14 changes: 14 additions & 0 deletions 백준/동적계획법/11055.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import sys
input = sys.stdin.readline

n = int(input())
ar = list(map(int, input().split()))

dp = ar[:]

for i in range(n):
for j in range(i):
if ar[i] > ar[j]:
dp[i] = max(dp[i], dp[j]+ar[i])

print(max(dp))
13 changes: 13 additions & 0 deletions 백준/동적계획법/11727.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import sys
sys.setrecursionlimit(10**6)

n = int(input())

def f(n):
global memo
if n >= 3 and len(memo) <=n:
memo.append(f(n-1)+f(n-2)*2)
return memo[n]

memo = [0, 1, 3]
print(f(n)%10007)
11 changes: 11 additions & 0 deletions 백준/동적계획법/1912.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import sys
input = sys.stdin.readline

n = int(input())
ar = list(map(int, input().split()))

dp = [ar[0]]
for i in range(len(ar) - 1):
dp.append(max(dp[i] + ar[i + 1], ar[i + 1]))

print(max(dp))
66 changes: 43 additions & 23 deletions 백준/동적계획법/22857.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,32 +3,52 @@
import sys
input = sys.stdin.readline

n, k = map(int, input().split())
lst = list(map(int, input().split()))
# n, k = map(int, input().split())
# lst = list(map(int, input().split()))

cnt = 0
start, end = 0, 0
size, size_max = 0, 0
flag = 1
# cnt = 0
# start, end = 0, 0
# size, size_max = 0, 0
# flag = 1

for start in range(n):
while cnt <= k and flag:
if lst[end] % 2: # 홀수인 경우
if cnt == k:
break
cnt += 1
size += 1
if end == n - 1:
flag = 0
break
end += 1
# for start in range(n):
# while cnt <= k and flag:
# if lst[end] % 2: # 홀수인 경우
# if cnt == k:
# break
# cnt += 1
# size += 1
# if end == n - 1:
# flag = 0
# break
# end += 1

if size_max < size - cnt:
size_max = size - cnt
# if size_max < size - cnt:
# size_max = size - cnt

if lst[start] % 2: #홀수인 경우
cnt -= 1
# if lst[start] % 2: #홀수인 경우
# cnt -= 1

size -= 1
# size -= 1

print(size_max)
# print(size_max)

# 아이디어 떠올리기가 쉽지 않음...ㅜ
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)]
print(dp)

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]
print(dp[i])
print()
result = []
for i in dp:
result.append(i[k])
print(max(result))

0 comments on commit 83ef0af

Please sign in to comment.