전체 보기

https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 풀이 동전의 배열을 coins[] 라고 하고 , 만들고 있는 갯수의 합의 결과를 dp[] 라고 하면 dp[k] 를 만들기위해 이전의 결과값을 더해줘야 한다. 기준을 conis[] 로 해서 반복문을 돌리면 coins[1] 일때 1~k원 까지 모두 체크 , coins[2] 일때 1~k원 가지 모두 체크 .. 이런식으로 해서 coins[n] 일때 모두 체크해서 기존의 dp 배열에 계속해서 추가해주면..
https://www.acmicpc.net/problem/11057 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수 www.acmicpc.net 문제 풀이 앞 자리 기준으로 자리 수가 늘어날때마다 추가로 들어간다고 생각하면 된다. 점화식은 다음과 같다 => dp[i][j] += dp[i-1][k]; i : 자릿수 j : 현재 자릿수의 0~9 k : 이전 자릿수의 0~9 그런데 이전 자릿수의 모든 수가 들어가는 것이 아닌 k
https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 문제 풀이 밑으로 진행 할 수록 , 최대한 값이 높게 나오게 합산하면서 내려오는 방식이다. 예제 입력처럼 주어진다면 "바로 위" 혹은 "왼쪽 위" 에서 값을 받아 내려올 수 있으므로 점화식은 => arr[i][j] = arr[i][j] + Math.max(arr[i-1][j],arr[i-1][j-1]); 이다. 하지만 왼쪽끝이나 오른쪽 끝에서는 둘 중에 큰 값을 받는것 대신 하나만 선택할 수 있으므로 그 조건만 추가하면 된다. 1 2 3 4 5 6 7 8 9 10 11..
https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 문제 풀이 첫 번째 집을 무슨 색으로 칠 하느냐에 따라서 결과가 달라지고 이전 집과는 다른 색을 칠해야 하므로 그리디로는 접근이 불가능하다. 만약 i 번째 집을 R로 색칠 하고 싶다고 가정을 하자. 그럼 i-1 번째 집은 R이 아니어야 한다. => i-1 번째집을 [G 로 색칠 했을때 총비용] 과 [B 로 색칠 했을때 총 비용] 중 작은 것을 선택 해야한다. 이런 식으로 하면..
https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 문제 풀이 포도주시식 문제랑 비슷하다. 단 , 종결 조건이 정해져있다. 만약 n번째 계단을 갔다고 가정하면 갈 수 있는 경우의 수는 두 가지다. dp[i] 를 i번째 계단까지 갔을 때 , 얻을 수 있는 점수의 총 합이라고 가정하자. 1. 직전 계단을 밟는경우 연속 3번 계단을 건널 수 없으니 => dp[n] = dp[n-3] + n-1계단점수 + n계단 점수 2. 한칸 건너 뛰어 오는 경우 => dp[n] =..
https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 문제 풀이 조건이 있는 DP 문제이다. 특정 i 번째 포도주를 골랐다는 가정을 하면 두 가지 경우로 나뉜다. i-1 번째를 선택한 경우 => dp[i] =dp[i-3]+arr[i-1]+arr[i] i-1 번째를 선택하지 않은 경우 => dp[i] = dp[i-2] + arr[i] 그리고 누적합이 그 전 단계가 더 클 경우도 있기때문에 dp[i] 와 dp[i-1] 중 큰 것을 골라야한다. 1 2 3 ..
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 풀이 만약 구하고 싶은 수를 i 라고 하면 , min( dp[i/2]+1 , dp[i/3]+1 , dp[i-1]+1 ) 이라는 최적해를 구해서 하면된다. 연산 순서에 따라 완전 다른 횟수가 나올 수 있기 때문에 그리디로 접근하면 x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 import java.util.*; import java.io.*; public class Main{ public static void main(Strin..
https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 문제 풀이 그리디 문제이다.. 처음엔 lis 알고리즘으로 풀 수 있을줄 알았다 ..왜냐 .. 서류와 면접 성적이 둘다 낮아야한다 => 평행하다 => 증가하는수열 => LIS 알고리즘 하지만 반례가 있었고 , LIS로 풀 수 없다는 것을 깨달았다 .. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27..
김까따
'분류 전체보기' 카테고리의 글 목록 (17 Page)