Dynamic Programming(27)
-
[BOJ 1577] 도로의 개수
- 문제 요약 세준이가 살고 있는 도시는 신기하게 생겼다. 이 도시는 격자형태로 생겼고, 직사각형이다. 도시의 가로 크기는 N이고, 세로 크기는 M이다. 또, 세준이의 집은 (0, 0)에 있고, 세준이의 학교는 (N, M)에 있다. (0, 0)에서 (N, M)까지 가는 서로 다른 경로의 경우의 수를 구하는 프로그램을 작성하시오. (세준이는 항상 최단거리로만 가기 때문에, 항상 도로를 정확하게 N + M개 거친다. 하지만, 최근 들어 이 도시의 도로가 부실공사 의혹으로 공사중인 곳이 있다. 도로가 공사 중일 때는, 이 도로를 지날 수 없다.) - 알고리즘 정리 공사중인 도로는 배열에 따로 넣어서 체크해주고, 아래 점화식을 이용해서 문제를 해결해 주면 됩니다. dp[i][j] : (0,0)부터 (i,j)까..
2024.12.11 -
[BOJ 1947] 선물 전달
- 문제 요약 이번 ACM-ICPC 대회에 참가한 모든 사람들은 선물을 하나씩 준비했다.대회가 끝나고 난 후에 각자 선물을 전달하려고 할 때, 선물을 나누는 경우의 수를 구하는 프로그램을 작성하시오.모든 사람은 선물을 하나씩 받으며, 자기의 선물을 자기가 받는 경우는 없다.( 경우의 수를 1,000,000,000으로 나눈 나머지를 첫째 줄에 출력한다. ) - 알고리즘 정리 직접 가능한 수를 만들어보며 점화식을 구해줬습니다. n = 0 (0)n = 1 (0)n = 2 (1)n = 3 (2)n = 4 (9)n = 5 (44) 이런 식으로 경우의 수를 구하며 가능한 경우를 직접 그리다 보면, 아래와 같은 점화식이 나옵니다.dp[i] = (dp[i-1] + dp[i-2]) * (i-1) 나온 값을 1,000,..
2024.12.05 -
[BOJ 4811] 알약
- 문제 요약 70세 박종수 할아버지는 매일 매일 약 반알을 먹는다. 손녀 선영이는 종수 할아버지에게 약이 N개 담긴 병을 선물로 주었다.첫째 날에 종수는 병에서 약 하나를 꺼낸다. 그 다음, 그 약을 반으로 쪼개서 한 조각은 먹고, 다른 조각은 다시 병에 넣는다.다음 날부터 종수는 병에서 약을 하나 꺼낸다. (약은 한 조각 전체 일 수도 있고, 쪼갠 반 조각 일 수도 있다) 반 조각이라면 그 약을 먹고, 아니라면 반을 쪼개서 한 조각을 먹고, 다른 조각은 다시 병에 넣는다. 종수는 손녀에게 한 조각을 꺼낸 날에는 W를, 반 조각을 꺼낸 날에는 H 보낸다. 손녀는 할아버지에게 받은 문자를 종이에 기록해 놓는다. 총 2N일이 지나면 길이가 2N인 문자열이 만들어지게 된다. 이때, 가능한 서로 다른 문자열의..
2024.12.05 -
[BOJ 2229] 조 짜기
- 문제 요약 첫째 줄에 학생의 수 N이 주어진다. 다음 줄에는 N명의 학생들의 점수가 나이 순서대로 주어진다. 각 학생의 점수는 0 이상 10,000 이하의 정수이다. 이 학생들을 묶어 조를 편성하려 한다. 가급적이면 실력 차이가 많이 나도록 조를 편성해야 한다. 조의 개수는 상관이 없다.각각의 조가 잘 짜여진 정도는 그 조에 속해있는 가장 점수가 높은 학생의 점수와 가장 점수가 낮은 학생의 점수의 차이가 된다. 또한 전체적으로 조가 잘 짜여진 정도는, 각각의 조가 잘 짜여진 정도의 합으로 나타난다. 한 명으로 조가 구성되는 경우에는 그 조의 잘 짜여진 정도가 0이 된다(가장 높은 점수와 가장 낮은 점수가 같으므로).학생들의 점수가 주어졌을 때, 조가 잘 짜여진 정도의 최댓값을 구하는 프로그램을 작성..
2024.12.04 -
[BOJ 11985] 오렌지 출하
https://www.acmicpc.net/problem/11985 11985번: 오렌지 출하 첫째 줄에 오렌지의 개수 N (1 ≤ N ≤ 20,000), 한 상자에 넣을 수 있는 오렌지 개수의 최댓값 M (1 ≤ M ≤ 1,000, M ≤ N), 상자를 포장하는 비용 K (0 ≤ k ≤ 1,000,000,000)가 주어진다. 둘째 줄부터 N개의 www.acmicpc.net 개수 - 문제 요약 Juicy Orange Industry(JOI)는 맛있는 오렌지를 포장해서 출하하는 것이 주된 업무인 회사이다. JOI사에서는 수집한 N개의 오렌지를 상자에 넣어서 출하한다. 먼저, 오렌지는 공장에 있는 컨베이어 벨트 위에 나란히 놓아야 한다. 컨베이어 벨트 위에 놓여져있는 오렌지는 앞에서부터 순서대로 1부터 N까..
2023.05.07 -
[BOJ 2237] 수열 축소
https://www.acmicpc.net/problem/2237 2237번: 수열 축소 N개의 양수로 이루어진 수열 {A[1], A[2], …, A[N]}이 있다. 이 수열에 A[i]에서 A[i+1]을 빼는 축소 연산을 적용하려 한다. 축소 연산은 CON이라는 함수로 나타낼 수 있으며, CON(A, i)를 수행하면 {A[1], A[2], www.acmicpc.net - 문제 요약 N개의 양수로 이루어진 수열 {A[1], A[2], …, A[N]}이 있다. 이 수열에 A[i]에서 A[i+1]을 빼는 축소 연산을 적용하려 한다. 축소 연산은 CON이라는 함수로 나타낼 수 있으며, CON(A, i)를 수행하면 {A[1], A[2], …, A[i-1], A[i] - A[i+1], A[i+2], …, A[N]}..
2023.05.06