목록코딩 테스트/백준 문제 풀이 (105)
공부 기록장
https://www.acmicpc.net/problem/2156 2156번: 포도주 시식효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규www.acmicpc.net 코드n = int(input())wine = []# dp[i]는 i번째 포도주를 마실 때의 최대 포도주 양dp = [0] * nfor _ in range(n): wine.append(int(input()))for i in range(n): if i == 0: dp[i] = wine[0] elif i == 1: dp[i] = wine[0] + wine[1] ..
https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 코드 n = int(input()) a = [0] * n for i in range(n): a[i] = list(map(int, input().split())) for i in range(1, n): a[i][0] = min(a[i-1][1], a[i-1][2]) + a[i][0] a[i][1] = min(a[i-1][0], a[i-1][2]) + a[i][1] a[i][2]..
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] * n for i in range(1, n): for j in range(i): if num[i] > num[j]: # dp[i]에 저장되는 값 : num[i]를 마지막 값으로 가지는 가장 긴 증가부분..
https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 코드 N = int(input()) dp = [0] * (N+1) for i in range(1, N+1): if i == 1 or i == 2: dp[i] = 1 else: dp[i] = dp[i-1] + dp[i-2] print(dp[N]) N이 1일때부터 쭉 적어가면서 이친수의 개수를 직접 세어보았고, 그 개수들 사이의 규칙을 찾아 점화식을 세웠다. 무작정 규칙을 찾으려고 하기보다..