본문 바로가기

boj127

[Java] BOJ 11727번 2xn 타일링 2 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. www.acmicpc.net 풀이 DP를 사용해서 해결했습니다. 직접 1칸부터 N칸까지의 경우를 구해보면 1칸 : 1개 2칸 : 3개 3칸 : 5개 4칸 : 11개 ... N칸 : (n - 1번째 칸의 경우의 수) + 2 * (n - 2번째 칸의 경우의 수) 가 됩니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static int N; publi.. 2021. 4. 9.
[Java] BOJ 10844번 쉬운 계단 수 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 DP를 이용해서 풀었습니다. 2자리 이상의 숫자부터는 0이 뒤에 포함될 수 있으므로 j = 0부터 시작하고 총 개수를 셀때에도 0부터 세어야합니다. 코드 #include using namespace std; long long d[101][10]; long long mod = 1000000000LL; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int n; long long result = 0; cin >> n; for (int i = 1; i 2021. 4. 8.
[Java] BOJ 1912번 연속합 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 풀이 DP를 사용하여 해결했습니다. 매번 memo[i] = arr[i]로 초기화시켜주고 이전까지 저장한 값에서 현재 더할 수를 더한 결과와 초기화한 값을 비교하여 더 큰 값을 저장하게했습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public s.. 2021. 4. 7.
[Java] BOJ 2156번 포도주 시식 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 풀이 DP를 사용해서 해결했습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static int N; // 주의!! // 만약 N이 1일 경우 DP를 할때에 memo배열이 1만 생기기때문에 memo[2] 부분에서 오류가 생긴다... public static int[] arr = new i.. 2021. 4. 2.
[Java] BOJ 2193번 이친수 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 풀이 DP를 이용해서 해결했습니다. 문제의 조건에서 이친수의 맨 앞에는 0이 올 수 없으므로 각 자릿수 별 이친수의 개수를 보면 한자리 = 1 → 1개 두자리 = 10 → 1개 세 자리 = 100, 101 → 2개 네 자리 = 1000, 1001, 1010 → 3개 다섯 자리 = 10000 10001 10010 10100 10101 →5개 ... N자리 = N - 1자리의 개수 + N - 2자리의 개수가 됩니다. 코드 import java.io.Buf.. 2021. 4. 1.
[Java] BOJ 1932번 정수 삼각형 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 풀이 문제의 조건에 있는 "아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다."를 DP에 적용하여 해결했습니다. 이때, i - 1을 할 경우 i가 0보다 작아질 수 있으니 이를 방지하기위해 배열의 크기를 [N + 1][N + 1]로 만들어 [1][1] 부터 수를 채우게했습니다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.ut.. 2021. 3. 31.