본문 바로가기

분류 전체보기251

백준 [자바 java] 11052번 : 카드 구매하기 이 문제는 카드 팩 별로 가격이 매겨진 카드들을 개수에 맞게 딱 사는 경우 중 가장 높은 가격을 구하는 문제이다. 처음에는 가성비가 가장 낮은 카드를 맞춰서 사는 방법을 생각했지만 너무 예외가 많았다. 그래서 dp에 1부터 차례로 값을 넣기로 했다. 예를 들어 dp [2]의 경우는 (2), (1,1)의 경우 중 더 비싼 것, dp [5]의 경우는 (1,4), (2,3), (5) 중 가장 비싼 것을 넣게 하였다. 이렇게 하면 세 묶음을 사는 경우를 굳이 고려하지 않아도 되기 때문이다. import java.io.*; import java.util.*; class Main { public static void main(String[] arg) throws IOException { BufferedReader .. 2022. 8. 1.
백준 [자바 java] 1932번 : 정수삼각형 import java.io.*; import java.util.*; class Main { public static void main(String[] arg) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader (System.in)); StringTokenizer st; int n = Integer.parseInt(br.readLine()); int[][] arr = new int[n+1][n+1]; int[][] dp = new int[n+1][n+1]; int i,j; for(i = 1;i 2022. 8. 1.
백준 [자바 java] 14888번 : 연산자 끼워넣기 이 문제는 숫자 사이사이에 주어진 연산자를 끼워 넣어 최댓값과 최솟값을 구하는 문제입니다. 특이한 점은 연산자 우선순위를 무시한다는 점이었습니다. import java.io.*; import java.util.*; class Main { static int cnt = 0; static int[] k ; static boolean[] visit; static int[] po; static int max = -1000000000; static int min = 1000000000; static int[] l ; static void arr2() { int i; int hap = k[0]; for(i = 0; i 2022. 8. 1.
백준 [자바 java] 백준 2156 : 포도주시식 이 문제는 딱봐도(?) 다이나믹프로그래밍 문제이다. 조금 주의할 점이 있다면 연속으로 세 잔 이상 마실수 없다는 것! import java.io.*; import java.util.*; class Main { public static void main(String[] arg) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader (System.in)); int n = Integer.parseInt(br.readLine()); int arr[] = new int[n+1]; int[] dp1 = new int[n+1]; int[] dp2 = new int[n+1]; int i; for(i = 1;i 2022. 7. 31.
백준 [자바 java] 백준 10844 : 쉬운 계단 수 처음 이 문제를 봤을 때는 무슨 말인지 이해가 잘 되지 않아서 여러번 읽어봤다. 한마디로 n자리수들 중에서 인접한 수의 차이가 모두 1인 수들의 갯수를 구하라는 문제이다. 예를 들어 n이 2일 때 10,12,21,23,32,34...이런 수들이 있고 이들의 개수를 출력해야 하므로 출력 값은 17이다. 처음에는 수학적 공식(?)이 dp보다 훨씬 간편할 것이라고 생각했지만 그건 나의 착각이었다. 앞에는 쫌 잘 돌아갔지만 25까지만 돌아가고 뒤에는 거의 안 돌아갔다. 당연히 시간 초과가 났고 이런저런 약간의 조치를 취했지만 해결되지는 않았다ㅜ 결국 다 지우고 dp로 해결해보았다. 2차원 배열을 만든 후 세로축은 0부터 9 그리고 가로 축은 자릿수를 의미한다. 일의 자릿 수에서 끝이니까 dp[i][1]은 다 1.. 2022. 7. 31.