12865: 평범한 배낭
문제 설명
https://www.acmicpc.net/problem/12865
문제 풀이
탐욕법인 줄 알았는데 동적계획법이었다.
n, k = map(int, input().split())
thing = [[0,0]]
dp = [[0]*(k+1) for _ in range(n+1)]
for i in range(n):
thing.append(list(map(int, input().split())))
for i in range(1, n+1):
for j in range(1, k+1):
w = thing[i][0]
v = thing[i][1]
if j < w:
dp[i][j] = dp[i-1][j]
else:
dp[i][j] = max(dp[i-1][j], dp[i-1][j-w]+v)
print(dp[n][k])
13549: 숨바꼭질3
문제 설명
https://www.acmicpc.net/problem/13549
from collections import deque
n, k = map(int, input().split())
q = deque()
q.append(n)
visited = [-1 for _ in range(100001)]
visited[n] = 0
while q:
s = q.popleft()
if s == k:
print(visited[s])
break
if 0 <= s-1 < 100001 and visited[s-1] == -1:
visited[s-1] = visited[s] + 1
q.append(s-1)
if 0 < s*2 < 100001 and visited[s*2] == -1:
visited[s*2] = visited[s]
q.appendleft(s*2)
if 0 <= s+1 < 100001 and visited[s+1] == -1:
visited[s+1] = visited[s] + 1
q.append(s+1)
1504: 특정한 최단 경로
문제 설명
https://www.acmicpc.net/problem/1504
14891: 톱니바퀴
문제 설명
https://www.acmicpc.net/problem/14891
1918: 후위 표기식
문제 설명
https://www.acmicpc.net/problem/1918
a = input()
stack = []
answer = ''
for x in a:
if x.isalpha():
answer += x
else:
if x == '(':
stack.append(x)
elif x == '*' or x =='/':
while stack and (stack[-1]=='*' or stack[-1]=='/'):
answer += stack.pop()
stack.append(x)
elif x == '+' or x == '-':
while stack and stack[-1] != '(':
answer += stack.pop()
stack.append(x)
elif x == ')':
while stack and stack[-1] != '(':
answer += stack.pop()
stack.pop()
while stack:
answer += stack.pop()
print(answer)
'알고리즘 문제 > 백준' 카테고리의 다른 글
백준 14719번: 빗물 python 풀이 및 정답 코드 (0) | 2021.10.30 |
---|---|
백준 2504번: 괄호의 값 python 풀이 및 정답 코드 (0) | 2021.10.30 |
백준 14888번: 연산자 끼워넣기 python 풀이 및 정답 코드 (0) | 2021.10.30 |
[백준] 2609, 2693, 1978, 1292, 2581번 파이썬 풀이 (1) | 2021.09.25 |
[백준] 2406, 2501, 3460, 10818, 10870 파이썬 풀이 (0) | 2021.09.12 |