본문 바로가기

728x90
SMALL

분류 전체보기

(444)
백준 9461번 [파도반 수열](C++) -yes6686- 티스토리 백준 문제 풀이: 9461 [파도반 수열]문제 링크: https://www.acmicpc.net/problem/9461문제 설명:파도반 수열은 다음 점화식을 따릅니다:P(1) = 1, P(2) = 1, P(3) = 1P(n) = P(n-1) + P(n-5) (n ≥ 4)여러 개의 테스트 케이스에서 주어진 n에 대해 P(n)을 계산하는 문제입니다.문제 해결 코드#include using namespace std;long long dp[101]; // 파도반 수열 값 저장int main() { int T; cin >> T; // 초기값 설정 dp[1] = 1; dp[2] = 1; dp[3] = 1; dp[4] = 2; // 점화식에 따라 나머지 값 계산 for..
백준 11401번 [이항 계수 3](C++) -yes6686- 티스토리 백준 문제 풀이: 11401 [이항 계수 3]문제 링크: https://www.acmicpc.net/problem/11401문제 설명:정수 n과 r이 주어질 때, 이항 계수 C(n, r)을 109+7로 나눈 나머지를 구하는 문제입니다. 이항 계수는 다음과 같이 정의됩니다:C(n, r) = n! / (r!(n-r)!)모듈러 연산과 페르마의 소정리를 사용하여 효율적으로 계산해야 합니다.문제 해결 코드#include #define MOD 1000000007using namespace std;// 거듭제곱을 계산하는 함수 (모듈러 역원 구하기)long long mod_pow(long long base, long long exp, long long mod) { long long result = 1; w..
백준 17136번 [색종이 붙이기](C++) -yes6686- 티스토리 백준 문제 풀이: 17136 [색종이 붙이기]문제 링크: https://www.acmicpc.net/problem/17136문제 설명:10×10 크기의 보드에서 각 칸은 1(붙여야 하는 칸) 또는 0(비어 있는 칸)으로 이루어져 있습니다. 1로 표시된 모든 칸을 최소 개수의 색종이를 이용해 덮어야 합니다. 색종이는 크기별로 1×1, 2×2, 3×3, 4×4, 5×5가 있으며 각 크기의 색종이는 최대 5장씩 사용할 수 있습니다.모든 칸을 덮을 수 없으면 -1을 출력하고, 덮을 수 있으면 사용된 색종이의 최소 개수를 출력합니다.문제 해결 코드#include using namespace std;int arr[10][10];/* 다섯 종류의 색종이 갯수 초기화*/int leftSquare1x1Cnt = 5;in..
백준 2482번 [색상환](C++) -yes6686- 티스토리 백준 문제 풀이: 2482 [색상환]문제 링크: https://www.acmicpc.net/problem/2482문제 설명:색상환에 색상 N개가 원형으로 배치되어 있습니다. 이 중 K개의 색상을 고르려 합니다. 단, 인접한 색은 동시에 선택할 수 없습니다. 가능한 경우의 수를 구하는 문제입니다. 결과는 1,000,000,003으로 나눈 나머지를 출력합니다.문제 해결 코드#include #define MOD 1000000003 using namespace std;int dp[1001][1001];int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n, k; cin >> n >> k; // DP 초기화 for (..
백준 1912번 [연속합](C++) -yes6686- 티스토리 백준 문제 풀이: 1912 [연속합]문제 링크: https://www.acmicpc.net/problem/1912문제 설명:N개의 정수로 이루어진 배열에서 연속된 부분 배열의 합이 최대가 되는 값을 구하는 문제입니다. 모든 수가 음수인 경우도 고려해야 합니다.문제 해결 코드#include using namespace std;int arr[100001];int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; int isAllNegative = 1; int maxAns = -1001; // 입력값 처리 및 초기 최대값 계산 for (int i = 0; i > arr[i]; if..
백준 2193번 [이친수](C++) -yes6686- 티스토리 백준 문제 풀이: 2193 [이친수]문제 링크: https://www.acmicpc.net/problem/2193문제 설명:이친수는 다음과 같은 조건을 만족하는 이진수입니다:0으로 시작하지 않습니다.1이 두 번 연속으로 나타나지 않습니다.정수 N(1 ≤ N ≤ 90)이 주어졌을 때, N자리 이친수의 개수를 구하는 문제입니다.문제 해결 코드#include using namespace std;long long dp[91]; // dp[i]: i자리 이친수의 개수int main() { int n; cin >> n; // 초기값 설정 dp[1] = 1; // 1자리 이친수: "1" dp[2] = 1; // 2자리 이친수: "10" // 점화식 계산 for (int i = 3..
백준 1932번 [정수 삼각형](C++)-yes6686- 티스토리 백준 문제 풀이: 1932 [정수 삼각형]문제 링크: https://www.acmicpc.net/problem/1932문제 설명:정수 삼각형이 주어졌을 때, 맨 위층에서 시작하여 아래층으로 내려오며 선택된 숫자의 합이 최대가 되는 경로를 구하는 문제입니다. 각 층에서 선택된 숫자는 바로 아래층의 인접한 숫자로만 이동할 수 있습니다.문제 해결 코드#include using namespace std;int arr[501][501];int dp[501][501];int main() { int n; cin >> n; // 삼각형 배열 입력 for (int i = 0; i > arr[i][j]; } } // DP 초기화 및 계산 dp[0][0] = arr[0][0..
백준 4883번 [삼각 그래프](C++)-yes6686- 티스토리 백준 문제 풀이: 4883 [삼각 그래프]문제 링크: https://www.acmicpc.net/problem/4883문제 설명:삼각 그래프가 주어질 때, 왼쪽 상단에서 시작하여 오른쪽 하단으로 이동하는 최소 비용을 계산하는 문제입니다. 이동은 다음과 같은 규칙을 따릅니다:현재 위치에서 바로 아래, 아래 왼쪽 대각선, 아래 오른쪽 대각선으로 이동 가능그래프의 각 노드에는 비용이 적혀 있으며, 이동한 노드의 비용을 합산문제 해결 코드#include #include using namespace std;long long arr[100001][3];long long dp[100001][3];int main() { ios::sync_with_stdio(false); cin.tie(NULL); in..

728x90
LIST