[백준] PS/Java [실랜디] 69

[백준 2529] 부등호 - JAVA

https://www.acmicpc.net/problem/2529 부등호 조건을 만족하는 수열의 최대/최소값을 찾는 문제 1. 구성요소 외에 순서가 고려 대상이고, 최대 최소를 모두 구해야하므로 완전탐색해야 함2. 수열을 0-9 순서로 뽑기 때문에 정렬은 필요 없음 나는 검증 후 재귀하는 방식으로 구현했다.수열을 일단 전부 뽑아놓고 검증하는게 구현은 좀 더 쉬울 것 같다. 그래도 10!으로 널널하다. import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import java.util.StringTokenizer;..

[백준 2780] 비밀번호 - JAVA

https://www.acmicpc.net/problem/2780 dp + 노가다좀 더 귀찮아지지만, list 순회보다 dp점화식에 바로 적용하는 것이 더 빠르다. n = 0~9일 때,dp[i][n] = SUM(dp[i-1][n에 인접한 수])import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;class Main { public static void main(String[] args) throws IOException { List[] l = new ArrayList[10]; for (int i = ..

[백준 2512] 예산 - JAVA

https://www.acmicpc.net/problem/2512이분탐색 1. 모든 요청이 배정될 수 있는 경우에는 요청한 금액을 그대로 배정한다.sum 2. 모든 요청이 배정될 수 없는 경우에는 특정한 정수 상한액을 계산하여 그 이상인 예산요청에는 모두 상한액을 배정한다. 상한액 이하의 예산요청에 대해서는 요청한 금액을 그대로 배정한다. 이분 탐색한다. import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;class Main { public static void main(String[] args) throws IOException ..

[백준 2688] 줄어들지 않아 - JAVA

https://www.acmicpc.net/problem/2688dp 문제 i번째 숫자에 어떤 num으로 도달했냐가 핵심이고, 0~i-1번째에 사용된 숫자는 유효하다면 기록할 필요가 없다. 수식dp[i][num] = ∑k=0num-1 dp[i-1][k] import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int TC = Int..

[백준 2149] 암호해독 - JAVA

https://www.acmicpc.net/problem/2149 문자열/정렬 문제 문제를 대충 읽으면 낭패본다. 1. 문제 설명은 암호화에 관한 것이고, 출력은 복호화를 요구한다.2. 평문은 가로를 기준으로 구성하고, 암호문은 세로를 기준으로 구성해야 한다. import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.Comparator;class Main { static class E { int num; char alpha; char[] chars; E(int num, char alpha, char[] ch..

[백준 2346] 풍선 터뜨리기 - JAVA

https://www.acmicpc.net/problem/2346 덱 문제 리스트 기반으로 점화식을 세워서 풀었다.덱보다 성능은 좋을 것 같고, 대신 문제 난이도는 어려워졌다. 다음 풍선 위치 구하기 풍선에 쓰인 수가 양수 :1. 다음 인덱스 = (현재 인덱스 + 쓰인 수 - 1) % 현재 리스트 사이즈(-1 하는 이유 : 리스트에서 idx번째 원소를 remove했으므로, idx가 기존의 idx+1번째 원소를 가리키는 것 상쇄) 풍선에 쓰인 수가 음수 :1. 다음 인덱스 = (현재 인덱스 + 쓰인 수) % 현재 리스트 사이즈(왼쪽으로 탐색하니 -1 하지 않는다.) 2. 1번 값이 음수라면, 다음 인덱스 = 현재 리스트 사이즈 + 다음 인덱스(파이썬처럼 -1, -2가 size - 1, size - 2..

[백준 2811] 상범이의 우울

https://www.acmicpc.net/problem/2811 구현 문제 일단 모든 우울 구간에서 2T 만큼 꽃을 준다.최대 우울 구간 리스트를 순회하며, 각각 3T 만큼 꽃을 줘보고 최대값인 경우를 도출한다. flower는 너무 길어서 rose로 썼다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import java.util.StringTokenizer;class Main { public static void main(String[] args) throws IOException { Buff..

[백준 3107] IPv6 - JAVA

https://www.acmicpc.net/problem/3107 문자열, 파싱 문제인데 생각보다 복잡했고 여러 방법이 있을 것 같다. 배운 점 String.split(regex, limit)에서,limit를 -1로 지정해야 끝의 연속된 빈 필드까지 원소로 포함시킨다.문제에서 가능한 입력 중, 다음과 같은 경우 차이가 일어난다. input:::split(":") => [] size0의 배열split(":", -1) => [,,] => size3의 빈 배열 이유는,split(regex) == split(regex, 0) 이며,limit=0일 때는 끝에서 부터 내용이 존재하지 않는 곳은 포함하지 않는 것이 기본 동작이다. input::::a:::a::::output: Arrays.toString(spl..

[백준 2548] 대표 자연수 - JAVA

https://www.acmicpc.net/problem/2548 정렬했을 때, 모든 원소와 차이를 최소로 하는 숫자는 항상 중앙에 위치한다. 처음에 중앙 인덱스를 다음과 같이 표현했다.짝수 일 때 : (a.len / 2) - 1홀수 일 때 : a.len / 2 ac이후 다른 코드에서, 분기처리할 필요 없음을 알게 되었다.짝/홀수 일 때 : (a.len -1) / 2import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;class Main { public static void main(String[] args) throws IOException { B..