[백준_11048] 이동하기 python
대각선, 위, 아래를 모두 생각해 줄 필요는 없다. 모든 사탕은 양수이기 때문이다. 초기 설정만 잘 해주면 쉽게 해결할 수 있다. 근데 이거 그리디 아닌가,,? # n, m 입력 n, m = map(int, input().split()) # grid 설계 grid = [ list(map(int, input().split())) for _ in range(n) ] # dp 설계 dp = [ [0] * m for _ in range(n) ] # 초기 설정 dp[0][0] = grid[0][0] # 가로 줄 초기설정 for i in range(1, m): dp[0][i] = dp[0][i-1] + grid[0][i] # 세로 줄 초기설정 for i in range(1, n): dp[i][0] = dp[i-1]..
2022. 7. 14.
[백준_15486] 퇴사2 python
퇴사1과 뭐가 다른건지 잘 모르겠다. 수학책 풀고 수학익임책 푼 듯한 느낌,,? # n 입력 n = int(input()) # T, P 설정 T, P = [], [] # t, p 입력 for _ in range(n): t, p = map(int, input().split()) T.append(t) P.append(p) # dp 설정 dp = [ 0 for _ in range(n+1) ] # dp 초기설정 dp[n] = 0 # dp 채우기 for i in range(n-1, -1, -1): if i + T[i] > n: dp[i] = dp[i+1] else: dp[i] = max(dp[i+1], dp[i+T[i]] + P[i]) # 출력 print(dp[0])
2022. 7. 10.
[백준_11057] 오르막 수 python
끝자리 수를 기준으로, 2차원 배열을 통해 해결하면 쉽게 해결된다. # dp설계 dp = [ [1, 0, 0, 0, 0, 0, 0, 0, 0, 0] for _ in range(1001) ] # 초기설정 dp[1] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] # dp 채워넣기 for i in range(2, 1001): for j in range(1, 10): dp[i][j] = dp[i][j-1] + dp[i-1][j] # n 입력 n = int(input()) # 출력 print(sum(dp[n]) % 10007)
2022. 7. 6.