목록Python (215)
가오리의 코딩일기
POINT - sort() : 오름차순 정렬 → first = numbers[n-1], second = numbers[n-2] - sort(reverse = True) : 내림차순 정렬 → first = numbers[0], second = numbers[1] - 가장 큰 수를 k번 더하고 두 번째로 큰 수를 1번 더하고 가장 큰 수를 k번 더하기를 반복 # 방법1 -> 내생각1 sort() 사용 n, m, k = map(int, input().split()) numbers = list(map(int, input().split())) numbers.sort() result = 0 while True: for i in range(k): if m == 0: break result += numbers[n-1]..

n = int(input()) number = list(map(int,input().split())) result = [0]*n result[0]=number[0] for i in range(1, n): for j in range(i): if number[i] > number[j]: result[i] = max(result[i], result[j]+number[i]) else: result[i] = max(result[i], number[i]) print(max(result))

n = int(input()) data = list(map(int, input().split())) dp = [1]*n for i in range(n): for j in range(i): if data[j] number[j] and result[j] > result[i]: result[i] = result[j] result[i]+=1 print(max(result))

n = int(input()) dp = [] for i in range(n): dp.append(int(input())) list0 = [0]*n list0[0] = dp[0] if n > 1: list0[1] = dp[0]+dp[1] if n > 2: list0[2] = max(dp[2]+dp[1], dp[2]+dp[0], list0[1]) for i in range(3, n): list0[i] = max(list0[i-1], list0[i-3]+dp[i-1]+dp[i], list0[i-2]+dp[i]) print(list0[n-1]) n = int(input()) array = [0] * 10000 for i in range(n): array[i] = int(input()) result = [0]*1..

T = int(input()) for i in range(T): dp = [] n = int(input()) for j in range(2): dp.append(list(map(int, input().split()))) for k in range(1, n): if k == 1: dp[0][k] += dp[1][k-1] dp[1][k] += dp[0][k-1] else: dp[0][k] += max(dp[1][k-1], dp[1][k-2]) dp[1][k] += max(dp[0][k-1], dp[0][k-2]) print(max(dp[0][n-1], dp[1][n-1])) POINT - 뗀 스티커 기준으로 왼쪽, 오른쪽, 위, 아래 스티커 사용 불가 - 점수의 합이 '최대'일 때를 구한다 dp[0][1] ..

n = int(input()) dp = [0, 1, 1] for i in range(3, 91): dp.append(dp[i-2]+dp[i-1]) print(dp[n]) n 1 2 3 4 5 f(n) 1 1 2 3 5 - 1 10 100, 101 1000, 1010, 1001 10000, 10101, 10100. 10010, 10001 dp[n] = dp[n-1]+dp[n-2]
그리디 알고리즘 → 매 순간 가장 좋아 보이는 것을 선택하고 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다 → '가장 큰/작은' 순서대로 같은 기준을 제시해줌 coin = int(input()) # 문제에선 1260원이라고 주어짐 money = [500, 100, 50, 10] count = 0 # 거슬러줄 동전의 수 for c in money: count += coin//c coin %= c # print(str(c)+"원", count) print(count)

n = int(input()) MOD = 10007 dp = [[0 for _ in range(10)] for _ in range(n+1)] for i in range(10): dp[1][i] = 1 for i in range(2, n+1): for j in range(10): for k in range(j, 10): dp[i][j] += dp[i-1][k] print(sum(dp[n]) % MOD)

n = int(input()) dp = [[0]*10 for _ in range(n+1)] for i in range(1, 10): dp[1][i] = 1 for i in range(2, n+1): for j in range(10): if j == 0: dp[i][j] = dp[i-1][1] elif j == 9: dp[i][j] = dp[i-1][8] else: dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1] print(sum(dp[n]) % 1000000000) n f(n) 1 9 1,2,3,4,5,6,7,8,9 2 17 12,23,34,45,56,67,78,89, 10,21,32,43,54,65,76,87,98 dp[자리수][앞의 숫자] = 경우의 수 dp[2][0] = 0 (..