본문 바로가기

백준32

백준 [자바 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.