본문 바로가기

DP4

[파이썬]programmers: 땅따먹기 https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DP문제 한칸한칸 내려가며, 겹치는 열이 나오지 않도록 슬라이싱을 하여 리스트를 나누어 주었다. 최댓값을 갖게 되는 경우를 매칸 더해주어서 마지막 줄에 max값을 return 해주면 된다! def solution(land): for y in range(1, len(land)): #두번째 줄 부터 경우를 탐색하며 내려옴 for x in range(4): # 4개 열중 전에 탐색한 열은 제외하며 최댓.. 2022. 12. 9.
beakjoon 16500: 문자열 판별 https://www.acmicpc.net/problem/16500 16500번: 문자열 판별 첫째 줄에 길이가 100이하인 문자열 S가 주어진다. 둘째 줄에는 A에 포함된 문자열의 개수 N(1 ≤ N ≤ 100)이 주어진다. 셋째 줄부터 N개의 줄에는 A에 포함된 단어가 한 줄에 하나씩 주어진다. A에 www.acmicpc.net 초기에 문제를 읽고 백트래킹으로 구현을 하면 되겠다 싶어서 백트래킹과 dfs를 섞어서 구현을 하였지만 시간초과가 났다. s = list(input()) n = int(input()) arr = [] for _ in range(n): arr.append(list(input())) result = [] def dfs(level,word): if level == len(s): if.. 2022. 6. 14.
backjoon 11055: 가장 큰 증가 부분 수열 https://www.acmicpc.net/problem/11055 11055번: 가장 큰 증가 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수 www.acmicpc.net dp를 이용한 문제.. dp개념을 잘 이해하지 못한 나에겐 조금 힘든 문제였다.. n=int(input()) arr=list(map(int, input().split())) result = [1]*n result[0] = arr[0] for i in range(1,n): for j in range(i): if arr[i] > arr[j]:.. 2022. 5. 19.
baekjoon 14606: 피자(small) https://www.acmicpc.net/problem/14606 14606번: 피자 (Small) 예제1의 입력이 1이므로, 게임 시작부터 갑이 분리할 수 있는 피자탑이 없습니다. 따라서 갑이 얻는 즐거움은 0입니다. 예제2의 정답 3은 다음과 같은 과정을 통해 얻어집니다. 먼저 놀이를 시작 www.acmicpc.net dp를 이용해서 푸는 문제 n =int(input()) arr = [0,0] def dp(n): global arr if n == 0: return 0 if n == 1: return 0 # arr = [0,0] for i in range(2, n+1): a = i//2 if i - (i//2) == i//2: b = i//2 else: b = 1+(i//2) num = a * b a.. 2022. 5. 17.