반응형

➰ 취업준비 66

[Python][백준][2003] 수들의 합 2 (투 포인터)

🍋 문제링크 https://www.acmicpc.net/problem/2003 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 123352 KB 시간 : 276 ms 🍉 Code def sum_i2j(i, j, arr): answer = 0 for k in range(i, j+1): answer += arr[k] return answer N, M = map(int, input().split()) arr = list(map(int, input().split())) start = 0 end = 0 result = 0 while (start < N and end < N): if (sum_i2j(start, end, arr) == M): result += 1 end += 1 elif (sum_i2j(start..

[Python][백준][11057] 오르막 수 (DP)

🍋 문제링크 https://www.acmicpc.net/problem/11057 11057번: 오르막 수 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 123172 KB 시간 : 120 ms 🍉 Code N = int(input()) dp = [[0 for _ in range(19)] for _ in range(1009)] dp[1] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] for i in range(2, N+1): for j in range(10): if j == 0: dp[i][j] = sum(dp[i-1]) else: dp[i][j] = dp[i][j-1] - dp[i-1][j-1] print(sum(dp[N])%10007) 🥝 메모 DP[][] 배열을 2차원으로 선언 DP[x..

[Python][백준][1874] 스택 수열 (STACK)

🍋 문제링크 https://www.acmicpc.net/problem/1874 🍉 Code 메모리 : 143944 KB 시간 : 32 ms N = int(input()) arr=[] result=[] temp=[] for _ in range(N): arr.append(int(input())) j = 0 for i in range(1, N+1): temp.append(i) result.append('+') while (temp and temp[-1] == arr[j]): temp.pop() j += 1 result.append('-') if not temp: # 비어 있으면 for i in result: print(i) else: print("NO") 🥝 메모 문제 이해도 한참 걸림 → N이 push되면 ..

[Python][백준][2294] 동전 2 (DP)

🍋 문제링크 www.acmicpc.net/problem/2294 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 29028KB 시간 : 320ms 🍉 Code import sys input = sys.stdin.readline def nj(k, coin, dp): temp=[] for i in coin: if k >= i and dp[k-i] != -1: temp.append(dp[k-i]+1) if len(temp)>0: return min(temp) else: return -1 n, k = map(int, input().split()) coin=[] for i in range(n): coin.append(int(input())) coin.sort() dp = [-1 for i in range(k +..

[Python][백준][11055] 가장 큰 증가 부분 수열 (DP)

🍋 문제링크 www.acmicpc.net/problem/11055 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 28776 KB 시간 : 188 ms 🍉 Code import sys input = sys.stdin.readline def find_prev(i, arr, dp): tmp=[] for j in range(i): if (arr[j] < arr[i]): tmp.append(dp[j]) if (len(tmp)==0): return -1 return dp.index(max(tmp)) n = int(input()) arr = list(map(int, input().split())) dp = [0]*(n+1) dp[0] = arr[0] for i in range(1, n): if (find_prev..

[Python][백준][11048] 이동하기 (DP)

🍋 문제링크 www.acmicpc.net/problem/11048 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 37064KB 시간 : 1000ms 🍉 Code import sys input = sys.stdin.readline N, M = map(int, input().split()) dp = [[0] * (M + 1)] * (N + 1) candy = [] for i in range(N): candy.append(list(map(int, input().split()))) for i in range(1, N+1): for j in range(1, M+1): dp[i][j] = max(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) + candy[i-1][j-1] print(dp[..

[Python][백준][5582] 공통 부분 문자열 (DP)

🍋 문제링크 www.acmicpc.net/problem/5582 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 248460 KB 시간 : 564 ms 🍉 Code answer = 0 str1, str2 = input(), input() #dp=[[0 for _ in range(len(str2) + 1)] for _ in range(len(str1) + 1)] dp=[[0] * (len(str2) + 1) for _ in range(len(str1) + 1)] for i in range(1, len(str1)+1): for j in range(1, len(str2)+1): if (str1[i-1] == str2[j-1]): dp[i][j] = dp[i-1][j-1] + 1 answer = max(dp[..

[C++][백준][9252] LCS 2 (DP)

🍋 문제링크 https://www.acmicpc.net/problem/9252 9252번: LCS 2 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 6004 KB 시간 : 4 ms 🍉 Code #include #include #include #include std::vector dp; std::vector answer; std::string str1, str2; void preset() { std::ios_base::sync_with..

[C++][백준][2293] 동전 1 (DP)

🍋 문제링크 https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 1116 KB 시간 : 0ms 🍉 Code #include int main(){ int n, k; int arr[109], dp[20009]; scanf("%d %d", &n, &k); for(int i=0 ; i