본문 바로가기

전체 글669

백준 11053 가장 긴 증가하는 부분 수열 (JAVA 자바 풀이) 백준 11053 가장 긴 증가하는 부분 수열 (JAVA 자바 풀이) 📌 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. ⚔ 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 📣 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. 💎 문제 분석 LIS의 기본 문제라고 한다. DP 배열을 1로 초기화 해놓고 크다면 배열을 증가시켜주어 COUNT를 올려.. 2022. 12. 13.
백준 2156 포도주 시식 (JAVA 자바 풀이) 백준 2156 포도주 시식 (JAVA 자바 풀이) 📌 문제 예를 들어 6개의 포도주 잔이 있고, 각각의 잔에 순서대로 6, 10, 13, 9, 8, 1 만큼의 포도주가 들어 있을 때, 첫 번째, 두 번째, 네 번째, 다섯 번째 포도주 잔을 선택하면 총 포도주 양이 33으로 최대로 마실 수 있다. ⚔ 입력 첫째 줄에 포도주 잔의 개수 n이 주어진다. (1 ≤ n ≤ 10,000) 둘째 줄부터 n+1번째 줄까지 포도주 잔에 들어있는 포도주의 양이 순서대로 주어진다. 포도주의 양은 1,000 이하의 음이 아닌 정수이다. 📣 출력 첫째 줄에 최대로 마실 수 있는 포도주의 양을 출력한다. 💎 문제 분석 처음 풀이에서는 그림과 같이 dp[2]일때만 고려하여 직전과 직전의 직전 dp만을 계산했다. 하지만 선택을 안하.. 2022. 12. 13.
백준 10844 쉬운 계단 수 (JAVA 자바 풀이) 백준 10844 쉬운 계단 수 (JAVA 자바 풀이) 📌 문제 45656이란 수를 보자. 이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다. N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다. ⚔ 입력 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 📣 출력 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. 💎 문제 분석 점화식 자체는 단순할 수 있지만 케이스를 0일 때와 9일때로 나눠주는 부분에서 생각이 필요하다. 또한 자바의 경우 자료형을 신경써주어야 해서 이런 문제는 차라리 파이썬으로 푸는게 속편할 수 있다. 💡 코드 구현 import java.io.Buff.. 2022. 12. 12.
백준 2579 계단 오르기 (JAVA 자바 풀이) 백준 2579 계단 오르기 (JAVA 자바 풀이) 📌 문제 각 계단에 쓰여 있는 점수가 주어질 때 이 게임에서 얻을 수 있는 총 점수의 최댓값을 구하는 프로그램을 작성하시오. ⚔ 입력 입력의 첫째 줄에 계단의 개수가 주어진다. 둘째 줄부터 한 줄에 하나씩 제일 아래에 놓인 계단부터 순서대로 각 계단에 쓰여 있는 점수가 주어진다. 계단의 개수는 300이하의 자연수이고, 계단에 쓰여 있는 점수는 10,000이하의 자연수이다. 📣 출력 첫째 줄에 계단 오르기 게임에서 얻을 수 있는 총 점수의 최댓값을 출력한다. 💎 문제 분석 점화식은 생각보다 간단한데 100%에서 계속 런타임 오류가 났다. 입력 범위가 작은 경우 배열 초기화를 N+1로 할 경우 처리를 못하는 에러가 발생한다(e.g. 1 -> 2,3에 대한 에.. 2022. 12. 11.
백준 1932 정수 삼각형 (JAVA 자바 풀이) 백준 1932 정수 삼각형 (JAVA 자바 풀이) 📌 문제 위 그림은 크기가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다. ⚔ 입력 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. 📣 출력 첫째 줄에 합이 최대가 되는 경로에 있는 수의 합을 출력한다. 💎.. 2022. 12. 10.