21921번: 블로그
첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다
www.acmicpc.net
출력값에서 둘째 줄에 기간 출력하는 게 무슨 말인지 이해하는데 한참 걸렸다.
→ 최대값과 같은 기간이 몇 번인지 구하는 것이다!!!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
// https://www.acmicpc.net/problem/21921
public class Main {
private static int N; // 블로그 시작한 후부터 일수
private static int X; // 방문자 수를 구할 기간
private static int[] visitCountArr;
private static int maxVisit = 0;
private static int maxPeriodCnt = 0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
X = Integer.parseInt(st.nextToken());
visitCountArr = new int[N];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
visitCountArr[i] = Integer.parseInt(st.nextToken());
}
solution();
}
private static void solution() {
// 처음 합계를 먼저 계산한다.
for (int i = 0; i < X; i++) {
maxVisit += visitCountArr[i];
}
maxPeriodCnt++;
int sum = maxVisit;
for (int i = X; i < N; i++) {
sum += visitCountArr[i] - visitCountArr[i - X];
if (sum > maxVisit) {
maxPeriodCnt = 1;
maxVisit = sum;
} else if (sum == maxVisit) {
maxPeriodCnt++;
}
}
if (maxVisit == 0) {
System.out.println("SAD");
} else {
System.out.println(maxVisit);
System.out.println(maxPeriodCnt);
}
}
}
'ps' 카테고리의 다른 글
[백준][실버][스택] 1874 스택 수열 (0) | 2023.06.20 |
---|---|
[백준][슬라이딩 윈도우][실버] 12891 DNA비밀번호 (0) | 2023.06.16 |
[백준][브론즈][투포인터] 1940 주몽 (0) | 2023.06.09 |
[프로그래머스][lv1] 푸드 파이트 대회 (0) | 2023.02.10 |
[백준][골드][벨만포드] 11657 타임머신 (0) | 2023.02.10 |