-
[Java] BOJ 21921 블로그개발자 취업/코딩테스트 준비 2023. 5. 26. 11:39반응형
21921번: 블로그
첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다
www.acmicpc.net
정답 코드
- X 크기만큼 누적합 구하기
- 저장해놓은 누적합에서 가장 큰 값 수 구하기
import java.io.*; import java.util.*; public class Main { static BufferedReader br; static StringTokenizer st; static int[] arr, sum; static int N, X, max, cnt; public static void main(String[] args) throws IOException { br = new BufferedReader(new InputStreamReader(System.in)); st = new StringTokenizer(br.readLine(), " "); N = Integer.parseInt(st.nextToken()); X = Integer.parseInt(st.nextToken()); st = new StringTokenizer(br.readLine(), " "); arr = new int[N]; for (int i = 0; i < N; i++) { arr[i] = Integer.parseInt(st.nextToken()); } sum = new int[N]; int tmp = 0; for (int i = 0; i < X; i++) { tmp += arr[i]; sum[i] = tmp; max = Math.max(max, sum[i]); } for (int i = X; i < N; i++) { tmp -= arr[i - X]; tmp += arr[i]; sum[i] = tmp; max = Math.max(max, sum[i]); } int cnt = 0; for (int i = 0; i < N; i++) { if (sum[i] == max) { cnt++; } } if (max == 0) { System.out.println("SAD"); } else { System.out.println(max); System.out.println(cnt); } } }
'개발자 취업 > 코딩테스트 준비' 카테고리의 다른 글
[Java] BOJ 14916 거스름돈 (0) 2023.06.01 [Java] BOJ 1927 최소 힙 (0) 2023.05.26 [Java] BOJ 20125 쿠키의 신체 측정 (0) 2023.05.26 [Java] BOJ 1213 팰린드롬 만들기 (3) 2023.05.26 [Java] BOJ 11729 하노이 탑 이동 순서 (0) 2023.05.03