2025/02/06 4

[백준 1749] 점수따먹기 - JAVA

https://www.acmicpc.net/problem/1749 2차원 누적 합 배열을 초기화하고, 완탐으로 모든 부분 행렬을 탐색한다.정답으로 부분 행렬 원소들의 합이 최대인 값을 출력한다. 기본 이론(누적 합 및 완탐에 둘 다 쓰임)초록 영역을 구하기 위해선 파란 영역 두개를 빼준 후, 공통 영역인 빨간 영역을 더한다.s를 누적합으로 치환하면,  이다. 해당 방식으로 누적합 배열을 초기화하고, 4중 for문을 돌며 모든 부분행렬에 대해 완탐한다.padding을 주면 경계 조건 체크를 안해도 되므로 더 효율적이다. (안했음)  오답 기록1. 정답이 음수인 경우가 있으므로, ans = 0으로 초기화하면 안된다.2. a1이 a2를 넘어가면 안된다. (구현 실수) import java.io.Buffered..

[백준] PS/Java 2025.02.06

[백준 6503] 망가진 키보드 - JAVA

https://www.acmicpc.net/problem/6503 투 포인터 사용한 문자의 개수 n이 N이하일 동안 r++ 하며 탐색 r값을 포함했을 때 n > N이 된다면, r을 포함하지 않고 l 정보를 제외한 후 l++ 이 과정을 r이 N에 닿을 때 까지 반복 (이 때 l++해서 최적인 경우는 없으므로 종료)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N; public static void mai..

[백준] PS/Java 2025.02.06

[백준 2118] 두 개의 탑 - JAVA

https://www.acmicpc.net/problem/2118 누적 합 + 투 포인터 시계 방향이 반시계 방향보다 짧은 거리일 동안답을 시계 방향과 비교한다. 다음 포인터는 반시계 방향이 시계 방향보다 짧은 거리임이 보장되므로답을 반시계 방향과 비교한다. import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static int N, total, ans; static int[] sum; public static ..

[백준] PS/Java 2025.02.06

[백준 2230] 수 고르기 - JAVA

https://www.acmicpc.net/problem/2230 바킹독 보고 풀음 이분 탐색을 위해 꼭 while문을 사용할 필요는 없었고,엔드 포인터의 경계조건을 2번 체크하는 것이 딜레마였는데 원래 필요한 것이라고 한다. arr[j] - arr[i] >= M 일 때, j--; 처리가 불필요한 이유는arr[i]보다 arr[i+1]은 무조건 크거나 같으므로,i에서 전처리를 했다면 j++; 동작만 필요하기 때문이다. 또한, arr[N] = Integer.MAX_VALUE로 padding해도 로직 상 AIOOB 에러가 뜨는 문제였다. (쓰려면 잘 써야한다는걸 깨닫게 해줌) import java.io.BufferedReader;import java.io.IOException;import java.io.Inp..

[백준] PS/Java 2025.02.06