본문 바로가기
728x90
반응형

DP18

[백준] 11055번: 가장 큰 증가하는 부분 수열 - python https://www.acmicpc.net/problem/11055 11055번: 가장 큰 증가하는 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가하는 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가하는 www.acmicpc.net 처음 작성한 아이디어 for문으로 돌면서 자기 자신보다 작으면 sum에 저장을 계속 해나가면서 high로 증가하는지 여부 체크 그 후 전 dp와 sum을 비교해 최대값을 저장하는 방식으로 구현을 했었다. n = int(input()) arr = list(map(int, input().split())) dp = [0] * (n+1) dp[.. 2024. 4. 1.
[백준] 11053번: 가장 긴 증가하는 부분 수열 - python https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net DP문제로 연속합과 비슷하게 가장 길게 증가하는 부분의 길이를 dp로 저장해 풀어나가는 방식이다. DP에 저장하기까지 생각이 꽤 오래걸렸다. 공부를 더 해야겠다. n = int(input()) arr = list(map(int, input().split())) dp = [1] * (n+1) for i in range(1.. 2024. 3. 30.
[백준] 1912번: 연속합 - python https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 구간의 최대 연속합을 구하는 문제 저장소를 만들어 현재까지의 최대 연속합을 저장해 나가면서 풀면 된다. 여기서 최대 연속합이 되는 경우는 3가지 경우인데 첫번째 경우는 -1 3 처럼 3이 현재값이 최대인경우 두번째는 3 2 처럼 전의 최장합과 바로 앞 원소가 더해져야 최대인 경우 세번째는 -1 2 3 처럼 자기 자신과 그 전 원소가 최대인 경우 이 모든 경우를 저장하며 끝까지 이어나간다음 dp의 최대값을 도.. 2024. 3. 30.
[백준] 2193번: 이친수 - python https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 공부하다가 머리식힐겸 DP문제 한문제 항상 DP는 옆에 주석으로 패턴을 남기면서 풀면 잘 풀리는 것 같다. 간단히 패턴을 찾았다. n = int(input()) dp = [0] * 91 dp[1] = 1 dp[2] = 1 dp[3] = 2 #100 101 dp[4] = 3 #1000 1010 1001 dp[5] = 5 #10000 10100 10010 10001 10101 for i i.. 2024. 3. 29.
728x90
반응형