일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 파이썬
- 앱
- permutation
- 1182
- Combination
- 뒤로가기
- 최소공배수
- 괄호
- itertools
- 안드로이드
- 나머지
- 코틀린
- 순열
- 홈화면
- expo
- 1260
- LCS
- Kotlin
- 11기
- Android
- 11054
- 11057
- 매일11시
- 백준
- 9095
- 코테
- 6603
- lcm
- Python
- 11053
- Today
- Total
목록백준 (48)
황소개발자
이거가 이글부터 보라는건 아닌데, 이 n 의 범위부터 봐라 범위가 100이하다 n ^ 2 돌려도 작은 수다 그래서 이중포문 맘편히 돌릴 수 있다. d[i] : i 일때 최대 값 a, c, v 는 한개의 세트로 묶어서 생각할 수 있다. 그리고 마지막에 오는게 제일 이득이다 a, c, v, v, v 이런식으로 올지언정 이 복붙관련 키들이 제일 마지막에 와야 이득 dp[11] 도 결국은 dp[7] 에서 a, c, v, v 해서 온것이다. n = int(input()) dp = [0 for i in range(101)] dp[0] = 0 dp[1] = 1 dp[2] = 2 for i in range(3, 101): dp[i] = dp[i - 1] + 1 for j in range(i - 3, -1, -1): d..
생각해보자 동전의 종류는 1원, 5원, 12원 자, 15원을 만들고 싶어 그러면 14원에서 1원을 더하거나, 10원에서 5원을 더하거나, 3원에서 12원을 더하거나 음 구현해보자 import sys input = sys.stdin.readline n, k = map(int, input().split()) lst = [] dp = [999999999] * (k + 1) dp[0] = 0 for _ in range(n): lst.append(int(input())) lst.sort() for price in lst: for i in range(price, k + 1): dp[i] = min(dp[i - price] + 1, dp[i]) print(dp[-1] if dp[-1] != 999999999 else..
첫번째 동전을 생각했을 때, 두번째 동전을 생각했을 때,, .... 하나씩 고려하면서 더해나가는거에요 import sys input = sys.stdin.readline n, k = map(int, input().split()) lst = [] dp = [0] * (k + 1) dp[0] = 1 for _ in range(n): lst.append(int(input())) lst.sort() for price in lst: for i in range(price, k + 1): dp[i] += dp[i - price] print(dp[k])
아니 이게 맞어부려? 1로만 했을 때, 2를 추가해줬을 때, 3을 추가해줬을 때 import sys input = sys.stdin.readline t = int(input()) dp = [1 for i in range(10001)] lst = [] for _ in range(t): lst.append(int(input())) for i in range(2, 10001): dp[i] += dp[i - 2] for i in range(3, 10001): dp[i] += dp[i - 3] for i in lst: print(dp[i]) 1로만 해준건 dp 생성때부터 설정해줬다.
푸는 방법은 다음과 같다 1. 파일들 중에서 제일 작은 두개를 뽑는다. 2. 합친다 3. 합친걸 다시 파일들에 둔다. 반복한다 이 때 구현은 minq 를 사용하는 것이 효율적이다. import sys input = sys.stdin.readline import heapq t = int(input()) for _ in range(t): n = int(input()) lst = list(map(int, input().split())) ans = 0 q = [] for i in lst: heapq.heappush(q, i) while len(q) > 1: a = heapq.heappop(q) b = heapq.heappop(q) ans += a + b heapq.heappush(q, a + b) print(a..
import sys input = sys.stdin.readline n = int(input()) days = [] for i in range(n): days.append(list(map(int, input().split()))) ans = -999999999 def go(day, total): global ans if day == n: # n에 알맞게 도착했을 때, 정답이 될 수 있다. ans = max(ans, total) return if day > n: # n을 초과한다면 범위 안에 일을 못끝내므로, 정답이 될 수 없다. return go(day + 1, total) # 이번 day는 일을 하지 않고 그냥 넘어간다! go(day + days[day][0], total + days[day][1]) ..
n = int(input()) mat = [] for i in range(n): mat.append(list(map(int, input().split()))) def next_permutation(lst): n = len(lst) i = n - 1 while i > 0 and lst[i - 1] >= lst[i]: i -= 1 if i == 0: return [-1] j = n - 1 while lst[i - 1] >= lst[j]: j -= 1 tmp = lst[j] lst[j] = lst[i - 1] lst[i - 1] = tmp lst = lst[:i] + sorted(lst[i:]) return lst pathes = [] path = [i for i in range(2, n + 1)] while..
import sys input = sys.stdin.readline n = int(input()) lst = list(map(int, input().split())) lst.sort() def next_permutation(lst): n = len(lst) i = n - 1 while i > 0 and lst[i - 1] >= lst[i]: i -= 1 if i == 0: return [-1] # i - 1 j = n - 1 while lst[j]