본문 바로가기
반응형

백준알고리즘/동적 계획법176

(Python/🥈2)백준리즘알고즘 1699번 : 제곱수의 합 문제 바로가기  문제:어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다. 이 경우, 수학자 숌크라테스는 “11은 3개 항의 제곱수 합으로 표현할 수 있다.”라고 말한다. 또한 11은 그보다 적은 항의 제곱수 합으로 표현할 수 없으므로, 11을 그 합으로써 표현할 수 있는 제곱수 항의 최소 개수는 3이다. 주어진 자연수 N을 이렇게 제곱수들의 합으로 표현할 때에 그 항의 최소개수를 구하는 프로그램을 작성하시오.입력:첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 100,000)출력:주어진 자연수를 제곱수의 합으로 나타낼 때에.. 2024. 6. 22.
(Python/🥈1)백준리즘알고즘 9465번 : 스티커 문제 바로가기  문제:상근이의 여동생 상냥이는 문방구에서 스티커 2n개를 구매했다. 스티커는 그림 (a)와 같이 2행 n열로 배치되어 있다. 상냥이는 스티커를 이용해 책상을 꾸미려고 한다. 상냥이가 구매한 스티커의 품질은 매우 좋지 않다. 스티커 한 장을 떼면, 그 스티커와 변을 공유하는 스티커는 모두 찢어져서 사용할 수 없게 된다. 즉, 뗀 스티커의 왼쪽, 오른쪽, 위, 아래에 있는 스티커는 사용할 수 없게 된다. 모든 스티커를 붙일 수 없게된 상냥이는 각 스티커에 점수를 매기고, 점수의 합이 최대가 되게 스티커를 떼어내려고 한다. 먼저, 그림 (b)와 같이 각 스티커에 점수를 매겼다. 상냥이가 뗄 수 있는 스티커의 점수의 최댓값을 구하는 프로그램을 작성하시오. 즉, 2n개의 스티커 중에서 점수의 합이.. 2024. 6. 22.
(Python/🥈2)백준리즘알고리즘 11722번 : 1,2,3 더하기 3 문제 바로가기 문제:정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.입력:첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 1,000,000보다 작거나 같다.출력:각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. 풀이:import sys, timesys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r')t = int(inpu.. 2024. 5. 23.
(Python/🥇3)백준알고리즘 5624번: 좋은 수 문제 바로가기 문제:정수 N개로 이루어진 수열 A가 있다. 이때, i번째 수가 그 앞에 있는 수 세 개의 합으로 나타낼 수 있을 때, 그 수를 좋다고 한다. (같은 위치에 있는 수를 여러 번 더해도 된다) 수열이 주어졌을 때, 총 몇 개의 수가 좋은 수 일까?입력:첫째 줄에 수열 A의 크기 N이 주어진다. (1 ≤ N ≤ 5000) 둘째 줄에는 수열 A의 각 숫자가 공백으로 구분되어 주어진다. (-100,000 ≤ Ai ≤ 100,000)출력:첫째 줄에 좋은 수의 개수를 출력한다. 풀이:  요즘 추세는 DP 인거 같아서 혼자 문제를 풀 때에는 DP만 푸려고 한다. 이 문제는 i 번째의 수가 i 앞에있는 3개의 숫자의 합으로 이루어 지는데 중복이 가능하다.그러면 A+B+C = I 가 되어야하는데N 이 50.. 2024. 5. 23.
(Python/🥈1)백준리즘알고리즘 1309번: 동물원 문제 바로가기 문제:이 동물원에는 사자들이 살고 있는데 사자들을 우리에 가둘 때, 가로로도 세로로도 붙어 있게 배치할 수는 없다. 이 동물원 조련사는 사자들의 배치 문제 때문에 골머리를 앓고 있다. 동물원 조련사의 머리가 아프지 않도록 우리가 2*N 배열에 사자를 배치하는 경우의 수가 몇 가지인지를 알아내는 프로그램을 작성해 주도록 하자. 사자를 한 마리도 배치하지 않는 경우도 하나의 경우의 수로 친다고 가정한다.입력:첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다.출력:첫째 줄에 사자를 배치하는 경우의 수를 9901로 나눈 나머지를 출력하여라. 풀이: import syssys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r')n = .. 2024. 5. 19.
(Python/🥈2)백준리즘알고리즘 11722번: 가장 긴 감소하는 부분 수열 문제 바로가기 문제:수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} 이고, 길이는 3이다.입력:첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력:첫째 줄에 수열 A의 가장 긴 감소하는 부분 수열의 길이를 출력한다. import syssys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r')n = int(input())lst = list(map.. 2024. 5. 18.
반응형