본문 바로가기

컴퓨터 공학/백준75

[백준] JAVA 자바 : 가장 큰 증가하는 부분 수열 (11055번) 이것도 푼 지가 오래 돼서 정확히 기억은 안 나는데, 작성한 코드를 대충 봤을 때, 이전 수열의 합들과 내 값을 비교해서 더 큰 값을 자신의 dp배열에 저장하는 듯?? import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BiggestIncreasingSequence { public static int stoi(String str) { return Integer.parseInt(str); } public static void main(String[] args) throws IOException { Buffere.. 2024. 1. 27.
[백준] JAVA 자바 : 정수 삼각형 (1932번) 사실 이건 학교에서 알고리즘 수업을 들을 때 배웠던 알고리즘이라서 굉장히 쉽게 풀었다. 위에서부터 차례대로 내려오면서 바로 아래, 오른쪽 대각선 아래의 합을 저장하고 삼각형을 계속 내려오면 되는 것... import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class IntegerTriangle { public static int stoi(String str) { return Integer.parseInt(str); } public static void main(String[] args) throws IOException.. 2024. 1. 27.
[백준] JAVA 자바 : 포도주 시식 (2156번) 아 이거 한 일주일 전에 풀었는데 귀찮아서 안 올리다가 이제서야 올리게 됐는데... 어떻게 풀었는지 다 까먹었다......ㅋㅋㅋㅋㅋㅋㅋㅋㅋ /* 0: 직전꺼없음 1:직전꺼있음 dp[1][0] = wine[1]; // 6 dp[1][1] = 0; dp[2][0] = wine[2]; // 10 dp[2][1] = dp[1][0]+dp[1][1] + wine[2]; // 16 dp[3][0] = +wine[3]; // 19 dp[3][1] = dp[2][0] + wine[3]; // 23 dp[4][0] = + wine[4] // 25 dp[4][1] = dp[3][0] + wine[4] // 28 dp[5][0] = + wine[5] // 31 dp[5][1] = dp[4][0] + wine[5] // 33.. 2024. 1. 27.
[백준] JAVA 자바 : 스티커 (9465번) 어려운 줄 알았는데 막상 생각을 좀 해보니 생각보다 쉬웠던 문제다. 가로의 길이를 N으로 두고 1부터 올려가면서 점화식을 구하면 된다. N이 N+1이 될 때 가질 수 있는 최대 가치는, N에서 윗줄(아랫줄)을 선택했다면 N+1번째에는 아랫줄(윗줄)을 선택하는 것 혹은 N-1번째에서 큰 값중 N+1번째의 위아래를 더하는 값 중 하나로 결정된다. 솔직히 이것도 글로만 보면 이해가 안 돼서... 코드로 보고 이해하심 됩니다ㅋㅋ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Sticker { public sta.. 2024. 1. 23.
[백준] JAVA 자바 : 오르막 수 (11057번) 오늘 근로하면서 오전 시간 내내 이것만 붙들고 있었는데... 진짜 한 3시간 정도 고민한 끝에 겨우겨우 점화식을 도출해서 풀 수 있었다... 난 아직 DP에 대해 전혀 알지 못하는 듯........ 여튼 자릿수를 N으로 놓고 1부터 차근차근 올려보면 dp[1] = 10; // 10 dp[2] = 55; // 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 dp[3] = 220; // 55 + 45 + 36 + 28 + 21 + 15 + 10 + 6 + 3 + 1 dp[4] = 715; // 220 + 165 + 120 + 84 + 56 + 35 + 20 + 10 + 4 + 1 ... 이렇게 된다. 즉 직전 수에서 이전 배열의 자릿수에 있는 수 만큼을 뺀 값을 더하면 된다. 나도 글로.. 2024. 1. 23.
[백준] JAVA 자바 : 동물원 (1309번) 어떻게 풀어야 할 지 참 난감한 문제였는데... 곰곰이 생각해서 겨우 풀 수 있었다. 간단히 얘기하자면, N-1번째에서 세로로 N번째 층을 더 올렸을 때의 경우의 수는 다음으로 구할 수 있다. N번째 층을 쌓지 않는 경우: N-1번째 층을 구하는 경우와 동일 N번째 층을 쌓는 경우 - N-1번째 층이 쌓여있다면 거기서 단순히 N번째 층이 정해진다. N번째 층을 쌓는 경우 - N-1번째 층이 쌓여있지 않다면 왼쪽과 오른쪽 중 하나를 고를 수 있으므로 x2 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Zo.. 2024. 1. 23.
반응형