728x90
https://www.acmicpc.net/problem/25822
2000문제 solve 기념 출제진 자격 조건에 달성하여 출제하게 된 문제입니다.
제가 지금까지 백준 문제를 풀면서 최소와 최대로 풀었던 문제수를 그대로 문제에 녹였고, 추천을 받아 solved의 스트릭 프리즈 기능을 사용해 보았습니다.
주어진 날 이전과 이후는 스트릭이 유지중이지만, 주어진 날짜의 스트릭 유지일수만 출력하면 되는 문제입니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int coincount = Math.min((int) (Double.parseDouble(br.readLine()) / 0.99), 2);
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
int[][] dp = new int[n][coincount + 1];
int maxsolve = 0;
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i = 0; i < n; i++) {
maxsolve = Math.max(maxsolve, arr[i] = Integer.parseInt(st.nextToken()));
}
dp[0][0] = arr[0] > 0 ? 1 : 0;
if(dp[0][0] == 0 && coincount != 0) {
dp[0][1] = 1;
}
for(int i = 1; i < n; i++) {
if(arr[i] > 0) {
for(int j = 0; j < dp[i].length; j++) {
dp[i][j] = dp[i - 1][j] + 1;
}
}
else {
for(int j = 1; j < dp[i].length; j++) {
dp[i][j] = dp[i - 1][j - 1] + 1;
}
}
}
int answer = 0;
for(int i = 0; i < n; i++) {
for(int d : dp[i]) {
answer = Math.max(answer, d);
}
}
System.out.print(answer + "\n" + maxsolve);
}
}
728x90
'백준 > 출제한 문제들' 카테고리의 다른 글
[백준] 28453번 : Previous Level (0) | 2023.08.21 |
---|---|
[백준] 26068번 : 치킨댄스를 추는 곰곰이를 본 임스 2 (0) | 2022.12.01 |
[백준] 25757번 : 임스와 함께하는 미니게임 (0) | 2022.10.25 |
[백준] 25756번 : 방어율 무시 계산하기 (0) | 2022.10.25 |
[백준] 25755번 : 거울반사 (0) | 2022.10.25 |
댓글