반응형

➰ 취업준비/알고리즘 문제풀이 39

[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

[C++][백준][9465] 스티커 (DP)

🍋 문제링크 www.acmicpc.net/problem/9465 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 2676 KB 시간 : 132 ms 🍉 Code #include #include int dp[2][100001], arr[2][100001]; int main(){ int t, n, i, j; scanf("%d", &t); while(t--) { scanf("%d", &n); for (i = 0; i

[C++][프로그래머스] level 2 - 큰 수 만들기

문제 설명 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 1자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수 미만인 자연수입니다. 입출력 예 number k return "1924" 2 "94" ..

[C++][프로그래머스] level 1 - 이상한 문자 만들기

문제 설명 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 제한 조건 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다. 입출력 예 s return "try hello world" "TrY HeLlO WoRlD" 입출력 예 설명 try hello world는 세 단어 try, hello, world로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 TrY, He..

[C언어][프로그래머스] Level 1 - 2016년

저는 현재 '42서울' 3기 2차를 기다리고 있습니다. 코로나때문에 계속 미뤄지고 있지만 언젠가 시작할 라피신과정을 위해 시간이 날때마다 틈틈히 알고리즘 문제들을 풀어보려합니다. 학교 공부로 인해 1년간 코테준비를 손놓고 있었기 때문에 아주 쉬운 단계부터 차근차근! 풀어나가보겠습니다 처음 쓰는 글들인 만큼 부족한 점도 많겠지만 따뜻한 응원부탁드리고 혹시 틀린부분이나 조언이 있다면 따끔한 지적부탁드립니다! ٩(๑❛ᴗ❛๑)۶ 문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,S..