b1106. 호텔
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/1106백준 1106번: 호텔 문제(Java) 풀이안녕하세요! 오늘은 백준 1106번 '호텔' 문제를 동적 계획법(DP)을 활용하여 풀어내는 Java 코드에 대해 알아보겠습니다. 이 문제는 최소 비용으로 특정 목표를 초과 달성해야 하는, 전형적인 Unbounded Knapsack(무제한 배낭) 문제의 변형입니다.문제의 핵심목표: 호텔 홍보를 통해 적어도 C명의 고객을 유치해야 합니다.비용: 각 홍보 활동(도시)마다 비용과 그로 인해 얻는 고객 수가 정해져 있습니다.조건: 모든 홍보 활동은 원하는 만큼 반복해서 수행할 수 있습니다.가장 중요한 포인트는 '적어도 C명'이라는 조건입니다. 즉, C명을 넘어 C+1명, C+5명 등을 유치하는 비용이 오히려..
b1890. 점프
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/1890백준 1890번: 점프 문제 풀이 (Java)안녕하세요, 오늘은 백준 1890번 '점프' 문제를 Java로 해결하는 방법을 알아보겠습니다. 이 문제는 동적 계획법(Dynamic Programming)을 사용하여 경로의 개수를 찾는 흥미로운 문제입니다.문제 파악N×N 크기의 게임판이 주어집니다. 각 칸에는 숫자가 적혀 있으며, 이 숫자는 해당 칸에서 점프할 수 있는 거리를 의미합니다. 가장 왼쪽 위 칸(0, 0)에서 시작하여 가장 오른쪽 아래 칸(N-1, N-1)까지 규칙에 맞게 점프하여 도달하는 경로의 개수를 구하는 것이 목표입니다.규칙은 다음과 같습니다.현재 칸 (i, j)에 적힌 숫자가 k라면, 오른쪽으로 k만큼 이동한 (i, j+k)나..
b2133. 타일채우기
·
Algorithm & Data Structures/BOJ
✨ 자바로 푸는 타일 채우기 문제 풀이 📌 문제 개요 3×N 크기의 벽을 2×1, 1×2 타일로 채우는 경우의 수를 구하는 문제입니다.단, 타일은 겹치지 않고 벽을 완전히 채워야 합니다. 입력: 정수 N (1 ≤ N ≤ 30, N은 짝수만 의미 있음)출력: 벽을 채우는 모든 경우의 수 💡 예제 입력8 💡 예제 출력153 🛠 알고리즘 접근 방식 이 문제는 단순한 피보나치나 일반적인 dp[i] = dp[i-1] + dp[i-2] 형태로 해결되지 않습니다.특수 패턴이 반복적으로 등장하기 때문에 이에 맞는 점화식을 구성해야 합니다. ✅ 핵심 아이디어 홀수 크기(N % 2 == 1)인 경우 절대 채울 수 없습니다 → 경우의 수 0기본적으로는 dp[i] = dp[i - 2] * 3여기에 특수 타일 패..
b11057. 오르막수
·
Algorithm & Data Structures/BOJ
✨ 자바로 푸는 오르막 수 문제 풀이 📌 문제 개요 오르막 수란, 각 자릿수가 비내림차순(내림하지 않는 순서)으로 구성된 수를 말합니다.예를 들어 1234, 1123, 5555는 오르막 수입니다.321, 201과 같이 감소하는 수가 있는 경우는 오르막 수가 아닙니다. 문제 목표는길이가 N인 오르막 수의 개수를 구하는 것이며,정답은 10007로 나눈 나머지를 출력합니다. 💡 예제 입력1 💡 예제 출력10 🛠 알고리즘 접근 방식 이 문제는 DP(동적 프로그래밍) 을 사용해 해결할 수 있습니다.우리는 다음 조건을 만족하는 점화식을 세울 수 있습니다. dp[i][j] : 길이가 i이고, 마지막 자릿수가 j인 오르막 수의 개수dp[i][j] = dp[i][j+1] + dp[i-1][j]끝자리가 j 이..