반응형

dp 6

[파이썬, Python] 백준 2096: 내려가기

문제 https://www.acmicpc.net/problem/2096 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net 코드 n = int(input()) board = list(map(int, input().split())) top = board bottom = board for _ in range(n - 1): board = list(map(int, input().split())) top = [board[0] + max(top[0], top[1]), board[1] + max(top), board[2] + max(top..

[파이썬, Python] 백준 11053: 가장 긴 증가하는 부분 수열

문제 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 코드 n = int(input()) num = list(map(int, input().split())) dp = [1 for i in range(n)] for i in range(n): for j in range(i): if num[i] > num[j]: dp[i] = max(dp[i], dp[j]+1) print..

[파이썬, Python] 백준 14501: 퇴사

문제 https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 코드 n = int(input()) t = list() p = list() dp = [0] * (n+1) for _ in range(n): a, b = map(int, input().split()) t.append(a) p.append(b) for i in range(n-1, -1, -1): if t[i] + i > n: dp[i] = dp[i+1] else: dp[i] = max(p[i] + dp[i + t[i]], dp[i+1]) print(dp[0]) 설명 우선 입력값을 다 받아주고 dp 리스트를 [0]으로 n+1개 만들어..

[파이썬, Python] 백준 1904: 01타일

문제 https://www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net 코드 n = int(input()) dp = [0] * 1000001 dp[1] = 1 dp[2] = 2 for i in range(3, n+1): dp[i] = (dp[i-1] + dp[i-2]) % 15746 print(dp[n]) 설명 경우의 수에 대해서 생각을 해보아야 한다. 우선 길이가 1인 경우는 1이 들어가는 1가지 경우밖에 없다. 길이가 2인 경우는 00 과 11 밖에 없다. 길이가..

[파이썬, Python] 백준 9655: 돌 게임

문제 https://www.acmicpc.net/problem/9655 9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 코드 n = int(input()) if n % 2 == 0: print("CY") else: print("SK") n = int(input()) dp = [''] * 1001 dp[1] = "SK" dp[2] = "CY" dp[3] = "SK" for i in range(4, n+1): if dp[i-1] == "SK": dp[i] = "CY" else: dp[i] = "SK" print(dp[n]) 설명 [풀이 1] 간단하게 생각하면 쉽게 풀리는 문제이다. n이 홀수라면 상근이가, n이 짝수라면 창영이가 게임..

[파이썬, Python] 백준 2156: 포도주 시식

문제 https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 코드 n = int(input()) juice = [int(input()) for _ in range(n)] + [0] dp = [0] * (n+2) dp[1] = juice[0] dp[2] = dp[1] + juice[1] if n >= 3: for i in range(3, n+1): dp[i] = max(juice[i-1]+dp[i-2], juice[i-2] + juice[i-1] + dp..

반응형