문제풀이/DP 35

[파이썬] [DP] 백준 18353 병사 배치하기

링크 https://www.acmicpc.net/problem/18353 18353번: 병사 배치하기 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 2,000) 둘째 줄에 각 병사의 전투력이 공백을 기준으로 구분되어 차례대로 주어진다. 각 병사의 전투력은 10,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 코드 import sys f = sys.stdin.readline n = int(f()) a = [int(x) for x in f().split()] dp = [1] * n # 앞쪽에 있는 값이 항상 뒤보다 커야함 # 남아있는 병사 수가 최대가 되어야 함 for i in range(n): for j in range(i): if a[i] < a[j]: dp[i] = max(dp[i]..

문제풀이/DP 2022.01.24

[파이썬] [DP] 금광

n * m 크기의 금광이 있다. 금광은 1* 1 크기의 칸으로 나누어져 있으며, 각 칸은 특정한 크기의 금이 들어 있다. 채굴자는 첫 번째 열부터 출발하여 금을 캐기 시작한다. 맨 처음에는 첫번째 열의 어느 행에서든 출발할 수 있다. 이후에 m번에 걸쳐서 매번 오른쪽 위, 오른쪽, 오른쪽 아래 3가지 중 하나의 위치로 이동해야 한다. 결과적으로 채굴자가 얻을 수 있는 금의 최대 크기를 출력하는 프로그램을 작성하라. a. 예를 들면 3 * 4 크기의 금광이 존재한다고 가정하자. 1332 2141 0647 가장 왼쪽 위의 위치를 (1, 1), 가장 오른쪽 아래의 위치를 (n, m)이라고 할 때, 위 예시에서는 (2, 1) -> (3, 2) -> (3, 3) -> (3, 4)의 위치로 이동하면 총 19만큼의 ..

문제풀이/DP 2022.01.24

[파이썬] [DP] 1로 만들기

정수 X가 주어진다. 정수 X에 다음 4가지 연산을 사용할 수 있다. X가 5로 나누어떨어지면, 5로 나눈다 X가 3로 나누어떨어지면, 3으로 나눈다 X가 2로 나누어떨어지면, 2로 나눈다 X에서 1을 뺀다 정수 X가 주어졌을 때, 연산 4개를 적절히 사용하여 1을 만든다. 이때 연산을 사용하는 횟수의 최솟값을 구하라. a. 예를 들면 정수 26이면, 산을 사용하는 횟수의 최솟값이 3이다. 26 - 1 = 25 (4) 25 / 5 = 5 (1) 5 / 5 = 1 (1) b. 입력 조건 첫째 줄에 정수 X가 주어진다. 1

문제풀이/DP 2022.01.24

[파이썬] [DP] 개미전사

개미 전사는 메뚜기 마을의 식량창고를 몰래 공격한다. 메뚜기 마을의 식량창고는 일직선으로 되어 있다. 각 식량창고에는 정해진 수의 식량을 저장하고 있으며 개미 전사는 식량창고를 선택적으로 약탈하여 식량을 빼앗을 예정이다. 메뚜기 정찰병은 일직선상에 존재하는 식량창고 중에서 서로 인접한 식량창고가 공격받으면 알아챌 수 있다. 따라서 개미 전사가 정찰병에게 들키지 않고 식량창고를 약탈하기 위해서는 최소한 한 칸 이상 떨어진 식량창고를 약탈해야 한다. 개미 전사는 식량창고 N에 대한 정보가 주어졌을 때 얻을 수 있는 식량의 최댓값을 구하는 프로그램을 작성하라. a. 예를 들면 식량창고 4개가 아래와 같이 존재한다고 가정한다. [1, 3, 1, 5] 이때 개미 전사는 두 번째 식량창고와 네 번째 식량 창고를 선..

문제풀이/DP 2022.01.24