썸네일 [백준 2812] 크게 만들기 2812번: 크게 만들기 N자리 숫자가 주어졌을 때, 여기서 숫자 K개를 지워서 얻을 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 1. 문제 요약 - N과 K (1 ≤ K 0 이면 다음 수를 입력받는다 2-2. count0 이면 그 숫자로 교체한다 만들다보니 배열보단 자료구조를 활용하는 것이 더 구현이 쉬울 것 같다고 생각했다 따라서 큐를 사용하기로 했다 [아이디어-3] - '[아이디어-2]의 어려움 및 해결' 의 해결방법 적용, 아래를 (0 예제입력 3번에서 틀린 값이 출력 되었다 10 4 /n 4177252841 를 입력 받았을 때 775841이 나와야 하지만 , 772841이 나온다 앞자리 수를 온전히 최대로 맞추는 것에 실패한 것인데, 이는 뒤에서 지금 삭제하..
썸네일 [백준 15724] 주지수 15724번: 주지수 네모 왕국의 왕인 진경대왕은 왕국의 영토를 편하게 통치하기 위해서 1X1의 단위 구역을 여러 개 묶어서 하나의 거대 행정구역인 주지수(州地數, 마을의 땅을 셈)를 만들 예정이다. 진경대왕은 www.acmicpc.net 1. 문제 요약 - 제한시간 2초 - N x M 사이즈의 단위구역 내에 각 값을 입력받고 - 이어서 시작행, 시작열, 끝행, 끝열을 입력받는다 해당 범위 내의 사람들의 수의 합을 구하는 문제이다 2. 아이디어 (문제 접근법) [아이디어-1] - int answer 를 만들어 범위 내의 합을 저장한다 - for 시작행-1 ~ 끝행-1 for 시작열-1 ~ 끝열-1 answer += 해당 위치 값 [아이디어-2] - 시간을 줄이는 방법 1. (0, 0) 에서 시작하는 범위..
썸네일 [백준12865] 평범한 배낭 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 1. 문제 요약 - 물품의 수 N 만큼 각각 무게 W와 가치 V를 가진 물품을 입력받는다 - 준서가 견딜 수 있는 무게를 K라고 할 때 가능한 가장 높은 가치의 물건을 담는 경우의 가치를 출력 2. 아이디어 (문제 접근법) [아이디어-1] - T 인스턴스를 생성해 저장할 배열 tArr[N] 를 만든다 - 각 무게에서의 최고 가치를 저장할 배열 maxValue[K+1] 를 만들어둔다 - tList 순..
썸네일 [백준 5557] 1학년 5557번: 1학년 상근이가 1학년 때, 덧셈, 뺄셈을 매우 좋아했다. 상근이는 숫자가 줄 지어있는 것을 보기만 하면, 마지막 두 숫자 사이에 '='을 넣고, 나머지 숫자 사이에는 '+' 또는 '-'를 넣어 등식을 만들며 놀 www.acmicpc.net 1. 문제 요약 - 제한시간 1초 - 0~9 범위의 숫자 3~100 개가 주어지고 오른쪽 끝의 숫자의 앞에 = 를 붙여 답으로, 그 외의 숫자들 사이에 '+' 나 '-' 를 붙여 올바른 등식을 만들어야 한다 - '+' 혹은 '-' 만 사용하므로 왼쪽에서 오른쪽 순으로만 확인하면 된다 - 중간에 값이 0~20 범위를 벗어나면 올바르지 않은 공식으로 취급받는다 2. 아이디어 (문제 접근법) [아이디어-1] - 태블릿 그림을 통해 풀었다 - arr[N] 에 입..
썸네일 [백준 1695] 팰린드롬 만들기 1695번: 팰린드롬 만들기 앞에서 뒤로 보나, 뒤에서 앞으로 보나 같은 수열을 팰린드롬 이라고 한다. 예를 들어 {1}, {1, 2, 1}, {1, 2, 2, 1}과 같은 수열은 팰린드롬 이지만, {1, 2, 3}, {1, 2, 3, 2} 등은 팰린드롬이 아니다. 한 수열 www.acmicpc.net 1. 문제 요약 - 제한시간 2초 - 수열을 입력받고, 최소 몇 개의 숫자를 입력받으면 팰린드롬이 되는지 알아내는 문제 2. 아이디어 (문제 접근법) [아이디어-1] - 참조 링크의 풀이를 태블릿 그림으로 이해하며 풀어보았다 - 입력받은 수열을 기록하기 위해 int[] arr = new int[N] 생성 - 다른 DP 문제들과 마찬가지로 연산 결과를 배열에 담기 위해 int[][] DPArr = new i..
썸네일 [백준 11055] 가장 큰 증가하는 부분수열 11055번: 가장 큰 증가하는 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가하는 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가하는 www.acmicpc.net 1. 문제 요약 부분 수열을 활용한 문제 - 증가하는 부분수열이므로 추가되는 요소는 이전 요소보다 큰 값을 갖는다 - 부분 수열이므로 연속되어야 할 필요가 없다 - 생성 가능한 부분수열들 중 합이 가장 큰 경우의 합을 출력 2. 아이디어 - 생성하고자 하는 수열과 같은 크기의 배열을 만들어 각 index 에 해당 위치까지 가질 수 있는 가장 큰 수열의 합을 기록하는 방식으로 풀어보려 한다 3. 어려움 및..