-
백준 21921번 블로그(자바) - 슬라이딩 윈도우코딩테스트 2023. 1. 18. 16:43
블로그
시간 제한메모리 제한제출정답맞힌 사람정답 비율1 초 512 MB 3822 1536 1245 39.536% 문제
찬솔이는 블로그를 시작한 지 벌써 � 일이 지났다.
요즘 바빠서 관리를 못 했다가 방문 기록을 봤더니 벌써 누적 방문 수가 6만을 넘었다.
찬솔이는 � 일 동안 가장 많이 들어온 방문자 수와 그 기간들을 알고 싶다.
찬솔이를 대신해서 � 일 동안 가장 많이 들어온 방문자 수와 기간이 몇 개 있는지 구해주자.
입력
첫째 줄에 블로그를 시작하고 지난 일수 � 와 � 가 공백으로 구분되어 주어진다.
둘째 줄에는 블로그 시작 1 일차부터 � 일차까지 하루 방문자 수가 공백으로 구분되어 주어진다.
출력
첫째 줄에 � 일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다.
만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다.
제한
- 1≤�≤�≤250,000
- 0≤ 방문자 수 ≤8,000
예제 입력 1 복사
5 2 1 4 2 5 1
예제 출력 1 복사
7 1
예제 입력 2 복사
7 5 1 1 1 1 1 5 1
예제 출력 2 복사
9 2
처음에 period 값을 1로 갱신시켜야 한다!
import java.util.Scanner; public class Main { static int n,x; static int[] visit; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); x = sc.nextInt(); visit = new int[n]; int answer = 0; int period = 0; for (int i = 0; i < n; i++) { visit[i] = sc.nextInt(); } int sum = 0; for (int i = 0; i <n; i++) { sum += visit[i]; if (i == x-1) { answer = sum; period = 1; } else if (i >= x) { sum -= visit[i-x]; if (sum == answer) period++; else if (sum > answer) { answer = sum; period = 1; } } } if (answer == 0) { System.out.println("SAD"); System.exit(0); } else System.out.println(answer + "\n" + period); } }
'코딩테스트' 카테고리의 다른 글
백준 2164번 카드2(자바) - 큐, 재귀 (0) 2023.01.19 백준 20437번 문자열 게임2(자바) - 투포인터# (0) 2023.01.19 백준 1522번 문자열 교환(자바) - 슬라이딩 윈도우# (0) 2023.01.16 백준 2206번 벽 부수고 이동하기(자바) - bfs## (0) 2023.01.16 백준 1987번 알파벳(자바) - dfs (0) 2023.01.11