반응형
백준 11057 문제
python으로 풀어봅니다.
Python |
import sys r = int(sys.stdin.readline()) # 중복 조합을 통해 문제를 수행한다. n = 10 + r - 1 a = n # n+r-1 b = r # r # aCb for i in range(1, r): a *= n - i # n x (n - i) .. x (n - r + 1) b *= r - i # r! print((a // b) % 10007) # a // b |
백준 11052 카드 구매하기
입력
첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000)
둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000)
출력
첫째 줄에 민규가 카드 N개를 갖기 위해 지불해야 하는 금액의 최댓값을 출력한다.
반응형
Python |
import sys n = int(sys.stdin.readline()) p = [0] + list(map(int, sys.stdin.readline().split())) dp = [0] * (n + 1) # 반복문을 통해 각 카드 개수의 지불하는 최대 금액을 구한다. for i in range(1, n + 1): for j in range(1, i + 1): # 현재 카드를 지불하는 최대 금액과 이전의 카드를 지불한(i - j) 최대 금액 + j개가 들어있는 카드팩 가격을 비교 dp[i] = max(dp[i], dp[i - j] + p[j]) print(dp[n]) |
백준 9465번 스티커
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 점수이다. 연속하는 두 정수 사이에는 빈 칸이 하나 있다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
출력
각 테스트 케이스 마다, 2n개의 스티커 중에서 두 변을 공유하지 않는 스티커 점수의 최댓값을 출력한다.
Python |
import sys t = int(sys.stdin.readline()) for _ in range(t): n = int(sys.stdin.readline()) m1 = list(map(int, sys.stdin.readline().split())) # 첫 번째 줄 점수 m2 = list(map(int, sys.stdin.readline().split())) # 두 번째 for i in range(1, n): if i == 1: m1[1] += m2[0] m2[1] += m1[0] else: m1[i] = max(m2[i - 1], m2[i - 2]) + m1[i] m2[i] = max(m1[i - 1], m1[i - 2]) + m2[i] print(max(m1[n - 1], m2[n - 1])) |
반응형
'알고리즘 백준문제풀기' 카테고리의 다른 글
백준 python 2941번 크로아티아 알파벳/ 4673번 셀프넘버 /1316번: 그룹 단어 체커 (0) | 2022.01.23 |
---|---|
백준 알고리즘 python 10951번 / 10814번 나이순 정렬/ 2231번 분해합 (0) | 2022.01.23 |
백준 python 18258번 큐2 / 1002번 터렛 / 9663번 N-Queen (0) | 2022.01.20 |
백준 python 16675번 두개의손 / 16674번 2018년을 되돌아보며 / 9665번 돌게임 (0) | 2022.01.20 |
백준 python 10214번 Baseball / 3182번 한동이는 공부가 하기 싫어! / (0) | 2022.01.19 |
댓글